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 '然后使用上面的代码我能得到最后输入的单词.但是,如果我以后"将光标定位在快速 "写" 棕色后"" 快 "我如何获得最后输入的字(即棕色,只要我按下空格).
请帮忙
好吧,我的第一个答案是,这应该更好:
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",它就不可能被检测到目前.