【发布时间】:2014-07-16 15:19:05
【问题描述】:
当我在键盘上用箭头移动光标时,我想获取Windows窗体的RichTextBox中文本的子字符串。
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
string wholeText = richTextBox1.Text;
if (wholeText.Length >0)
{
int positionBegin = richTextBox1.SelectionStart;
SelectedText = wholeText.Substring(positionBegin);
}
}
但这是不正确的。例如,我输入了以下句子:
你好吗?
我想得到子字符串
你在做什么?
有两种方法。
- 一个是从右到左,说我把光标移到句尾,用左箭头移动到字母
y之前停住。我得到了
ou doing?
-
或者从左到右,假设我将光标移动到句子的开头,使用右箭头移动并停止在字母
y之前。我得到了you doing?案例一缺少字母
y'. Case two added a white space beforey`。
我尝试对索引 +1 或 -1,但它生成了“IndexOutOfRangeException”。
使用SelectionStart有什么问题吗?
【问题讨论】:
-
请改用 KeyUp 事件,因为在您运行代码时,SelectionStart 位置尚未更改。或 SelectionChanged 事件。