zoukankan      html  css  js  c++  java
  • RichtextBox 行和列

    1. 获得光标所在的行号
    2. 获得光标所在的列号
    3. 设置光标到指定行号
    4. 设置光标到指定列号

    http://www.huifangseo.com/blog/6/7.html

        获得光标所在的行号和列号

    方法1

        int SelStart = richTextBox1.SelectionStart;
        int Line = 1 + richTextBox1.GetLineFromCharIndex(SelStart); //行值
        int Column = 1 + SelStart - (richTextBox1.GetFirstCharIndexFromLine(Line - 1));//列值
        Text = string.Format("行{0} 列{1}", Line, Column);  

    方法2

    using System.Runtime.InteropServices;
    
    private int EM_LINEINDEX = 0x00BB;
    private int EM_LINEFROMCHAR = 0x00C9;
    
    [DllImport("user32.dll", EntryPoint = "SendMessage")]
    public static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
    
    public Point GetCaretPosition(TextBoxBase editControl)
    {
        int charIndex = (int)SendMessage(editControl.Handle, EM_LINEINDEX, -1, 0);//行值
        int lineIndex = (int)SendMessage(editControl.Handle, EM_LINEFROMCHAR, charIndex, 0);//列值
        return new Point(editControl.SelectionStart - charIndex, lineIndex);
    } 
    private void button2_Click(object sender, EventArgs e)
    {
        Point pt = GetCaretPosition(richTextBox1);
        Text = string.Format("行{0} 列{1}", pt.X + 1, pt.Y+1);  
    }

        http://bbs.csdn.net/topics/360049737

        设置光标到指定行号


    方法1 GetFirstCharIndexFromLine

    //转到第三行
    int Line = 3;
    richTextBox1.SelectionStart = richTextBox1.GetFirstCharIndexFromLine(Line - 1);
    richTextBox1.SelectionLength = 0;
    richTextBox1.ScrollToCaret();
    richTextBox1.Focus();

    方法2 SendMessage

    //转到第3行
    int Line = 3;
    richTextBox1.SelectionStart = SendMessage(richTextBox1.Handle, EM_LINEINDEX, Line - 1, 0);
    richTextBox1.SelectionLength = 0;
    richTextBox1.ScrollToCaret();
    richTextBox1.Focus();

        设置光标到指定列号

    先转到指定行号,然后 加上当前光标的列号 richTextBox1.SelectionStart

    private void jumpColumn(int Column)
    {
        int Line = Column;
    
        int charIndex = (int)SendMessage(richTextBox1.Handle, EM_LINEINDEX, Line - 1, 0);
        int lineIndex = charIndex + (int)SendMessage(richTextBox1.Handle, EM_LINEFROMCHAR, charIndex, 0);
        
        richTextBox1.SelectionStart = lineIndex;
    }
    private void button4_Click(object sender, EventArgs e)
    {
        //转到第5行 第5列
        richTextBox1.Focus();
        jumpColumn(5);
    }
  • 相关阅读:
    u-boot 用哪个lds链接脚本
    u-boot-2019.07 移植步骤
    u-boot-2016.09 make编译过程分析(二)
    grep 命令搜索 带空格的字符
    uboot if_changed函数
    2019保险规划 待完善
    MongoDB Capped集合
    并发编程——详解 AQS CLH 锁
    Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
    观察者模式
  • 原文地址:https://www.cnblogs.com/xe2011/p/3465220.html
Copyright © 2011-2022 走看看