使用SelectionStart获取文本的子字符串

时间:2014-07-16 15:19:05

标签: c# winforms

当我用键盘上的箭头移动光标时,我想获取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?

  • 或者从左边到roght,说我将光标移动到句子的开头,使用右箭头在字母y之前移动和停止。我得到了

    you doing?

    案例一缺少字母y'. Case two added a white space before y`。

我对索引尝试了+1或-1,但它生成了“IndexOutOfRangeException”。 使用SelectionStart时出错了什么?

1 个答案:

答案 0 :(得分:1)

使用SelectionChanged事件而不是KeyDown。我将返回正确的子字符串,它也将处理鼠标选择。