【发布时间】:2015-11-24 04:44:42
【问题描述】:
我正在开发一个包含RichTextBox 的文本编辑器。我想要实现的功能之一是随时在TextBox 中显示上述RichTextBox 的插入符号的当前行和列。
这是我使用的部分代码(我的其余代码与我的问题无关):
int selectionStart = richTextBox.SelectionStart;
int lineFromCharIndex = richTextBox.GetLineFromCharIndex(selectionStart);
int charIndexFromLine = richTextBox.GetFirstCharIndexFromLine(lineFromCharIndex);
currentLine = richTextBox.GetLineFromCharIndex(selectionStart) + 1;
currentCol = richTextBox.SelectionStart - charIndexFromLine + 1;
此时,我应该提一下,当有人使用RichTextBox 时,插入符号可以通过三种方式更改位置:
- 通过更改
Text的RichTextBox - 使用键盘上的箭头键
- 通过单击
RichTextBox上的任意位置
我在上面发布的代码在前两种情况下都没有问题。但是,在第三种情况下它并没有真正起作用。
我尝试使用Click 事件,我注意到selectionStart 变量的值总是0,这意味着我总是得到相同和错误的结果。此外,在 MouseClick 和 MouseUp 等其他事件上使用相同的代码并不能解决我的问题,因为即使在这些事件期间,selectionStart 也是 0。
那么,每次用户点击RichTextBox时,如何获取当前行和列?
【问题讨论】:
-
使用 RichTextBox.SelectionChanged 事件。并使用标签来显示位置。 codeproject.com 上有很多 RTB 编辑器项目
-
使用
RichTextBox_SelectionChanged似乎可以解决问题。SelectionStart得到正确的值。谢谢。
标签: c# winforms click richtextbox