这个问题快把我逼疯了。我有一个 RTB,当按下空格键时,我捕获了在 RTB 中输入的最后一个单词,并将其替换为 VS intellisense 弹出窗口中所见的一些建议单词。一切正常,除了当我粘贴带有超链接/表格的文本时,RTB.SelectionStart 属性变得大于 RTB.Text.Length。从 RTB.SelectionStart 属性中,我捕获向左输入的字符,直到找到一个空格,然后将其反转以获取输入的最后一个单词。但是如果我粘贴一些超链接文本并开始写一些单词,我就不能这样做;因为现在 RTB.SelectionStart 变得比 RTB.Text.Length 大;我不能使用 RTB.Text.Substring 方法来捕获字符(向左)
在这种情况下如何正确获取当前光标位置?
编辑:
private string GetLastWord()
{string word = "";
int pos = rtfText.SelectionStart;
// int length = rtfText.Text.Length;
// if (pos > length) pos = length;
if (pos >= 1)
{
string tmp = "";
var f = new char();
while (f != ' ' && f != '-' && f != 10 && pos > 0)
{
pos--;
tmp = rtfText.Text.Substring(pos, 1);
f = tmp[0];
word += f;
}
char[] ca = word.ToCharArray();
Array.Reverse(ca);
word = new String(ca);
}
// MessageBox.Show(word + ":" + word.Length);
return word;
}