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

本文关键字:字符串 取文本 SelectionStart 获取 使用 | 更新日期: 2023-09-27 18:13:16

我想在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?

    case 1缺少字母y'. Case two added a white space before y ' .

我尝试了+1或-1的索引,但它产生了"IndexOutOfRangeException"。使用SelectionStart有问题吗?

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

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