按 MSDN 的说法, richTextBox 的 GetLineFromCharIndex 方法只能获取物理行号,如果richTextBox设置了自动换行,则一个长的逻辑行会折成几个物理行,GetLineFromCharIndex得到是屏幕上显示的物理行索引。目前只能遍历lines对象,根据每个逻辑行的长度来判断当前位置所处行,或查找换行符的位置,但速度都比较慢,不知道有没有其他方法得到指定位置的逻辑行号,也就是lines的索引号。

解决方案 »

  1.   

    那直接用richTextBox.Text.split()函数好了,分隔符自己定义。应该也不算麻烦吧。
      

  2.   

    MSDN中关于 GetLineFromCharIndex 的解释:此方法使您得以基于它的 index 参数中指定的字符索引确定行号。控件中的第一行文本返回零值。GetLineFromCharIndex 方法返回索引字符在控件中的物理行号。例如,如果控件中文本的第一逻辑行的一部分换行到下一行,则在指定的字符索引处的字符已经换行到第二物理行时,GetLineFromCharIndex 方法返回 1。如果将 WordWrap 设置为 false,则该行不会换行到下一行,并且对于特定的字符索引该方法返回 0。可以使用此方法确定特定字符索引所在的行。例如,调用 Find 方法搜索文本后,可以获得到找到搜索结果处的字符索引。可以用 Find 方法返回的字符索引调用此方法以确定找到该单词的行。