如题。
1.用GetCaretPos和GetCharIndexFromPosition函数试了下,发现对文件的末尾元素的处理还有点问题,如:
“123”当光标停在“2”的后面,显示“行:1  列:3”,但当光标在“3”的后面却显示“行:1  列:3”(实际是“行1列4”)
因为对于这种情况GetCharIndexFromPosition返回的都是最后一个字符的索引。2. 我将光标所在行写在状态栏中,应该是什么事件激发状态栏的写入呢,这里我用的是keyup,感觉不太好。而且我只判断了键盘上的上下左右(鼠标左键也可以),但总觉不妥。先谢谢各位了!   private void richTextBoxEdit_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
            {
                int X, Y;
                int pos;
                Point p = new Point(0);
                GetCaretPos(ref p);
                pos = richTextBoxEdit.GetCharIndexFromPosition(p);//光标右侧的字符
                
                X = richTextBoxEdit.GetLineFromCharIndex(pos);                //若不是第一行
                if (X > 0)
                {
                    int offset = 1;
                    while (richTextBoxEdit.Text[pos - offset] != '\n')
                        offset++;
                    Y = offset;
                    X++;                 
                }
                else
                {
                    X = 1;
                    Y = pos + 1;                  
                }                toolStripStatusLabel4.Text = "行:" + X.ToString() + "列:" + Y.ToString();
            }
        }