最近在实现记事本的状态栏(能动态获取当前光标位置,就是能显示现在光标在文本中第几行,第几列)。
一开始用KeyDown来实现,但感觉情况太多,不是最好的解决办法。
于是想到应该有一种动态获取当前光标位置的方法,才是最好的解决办法。请高手指教。

解决方案 »

  1.   

    richtextbox中能获取吗?应该是在窗体中获取吧。
      

  2.   

    RichText貌似不能,建议换控件才能做到。
      

  3.   

    ref:
    http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c89c.aspx#q890q
      

  4.   

    public static Point GetCurrentPosition(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);
    }
      

  5.   

    谢谢大家,这个问题解决了,用了一个timer控件,在timer的Tick事件里实现。
    int begin = 0;
    int fronting = richText.SelectionStart;
    row = richText.GetLineFromCharIndex(richText.SelectionStart); 
    while (begin < fronting) 
          { 
    if (row == richText.GetLineFromCharIndex(begin)) //richTextBox的GetLineFormCharIndex()方法,获取行号
                 { 
    break;
        } 
        else
        { 
    begin++;
         } 
          } 
    field = fronting - begin;
    row++;
    field++;
    staHang.Text = "行"+" "+row;
    staLie.Text = "列"+" "+field;
      

  6.   

    在SelectionChanged里获取即可,不必用timer
      

  7.   

    up  !lz 解决方法不错,不过最好不要timer 触发,
    可以改为 控件区域鼠标事件触发那样更合理一点