使用c#获取RichTextBox的最后输入的单词

jef*_*eff 0 c# richtextbox winforms

如何在RichTextBox中获取最后输入的单词及其索引位置(两个空格之间的单词.一旦我按空格,我需要获取单词).如果单词位于RichTextBox文档的末尾,我已使用以下代码获取最后输入的单词及其索引位置.

private void richTextBox_KeyPress(object sender, KeyPressEventArgs e){
         if(e.KeyChar == ' '){
         int i = richTextBox.Text.TrimEnd().LastIndexOf(' ');
        if(i != -1)  MessageBox.Show(richTextBox.Text.Substring(i+1).TrimEnd());
                }
      }
Run Code Online (Sandbox Code Playgroud)

但是如果我在RTB中输入一个句子的中间,我如何得到最后输入的单词及其索引位置(例如' quick fox '是句子;如果我在' fox '之后写' jumps '然后使用上面的代码我能得到最后输入的单词.但是,如果我以后"将光标定位在快速 "写" 棕色后"" "我如何获得最后输入的字(即棕色,只要我按下空格).

请帮忙

Pie*_*ult 5

好吧,我的第一个答案是,这应该更好:

private void richTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == ' ')
    {
        int wordEndPosition = richTextBox1.SelectionStart;
        int currentPosition = wordEndPosition;

        while (currentPosition > 0 && richTextBox1.Text[currentPosition - 1] != ' ')
        {
            currentPosition--;
        }

        string word = richTextBox1.Text.Substring(currentPosition, wordEndPosition - currentPosition);
    }
}
Run Code Online (Sandbox Code Playgroud)

SelectionStart获得当前的插入位置.SelectionStart通常用于知道用户的文本选择("蓝色突出显示的文本")的开始和结束位置.然而,即使没有选择,它仍然可以获得当前的插入位置.

然后,为了得到输入的单词,它向后移动直到它找到一个空格(或索引0,对于第一个单词).

所以你得到一点点Substring,并currentPosition保持你的单词的索引.

适用于各地的文字,但它有一个缺点:如果不是在"快速"之后插入插入符号并进入"棕色空间",用户将插入符号放在"快速"并输入"SPACE brown",它就不可能被检测到目前.