【发布时间】:2016-02-09 04:30:45
【问题描述】:
如果文本框中的输入与富文本框中的输入匹配,我正在尝试更改字符的颜色。
char key = e.KeyChar;
for(int i = 0; i < rchtxtbox.Text.Length; i++)
{
char currentLetter = rchtxtbox.Text[i];
if (key == currentLetter)
{
rchtxtbox.SelectionStart = 0;
rchtxtbox.SelectionLength = 1;
rchtxtbox.SelectionColor = Color.White;
rchtxtbox.SelectionBackColor = Color.LightGreen;
}
}
仅在匹配时突出显示当前字母。一个例子是,如果富文本框中的单词是“balloon”并且第一次输入的输入是“b”,它会匹配并改变颜色,但是如果添加了下一个字母“ba”,则函数停止工作并且不会改变颜色。我尝试过的其他替代方法最终改变了所有匹配字符的颜色。如果匹配,我希望能够逐个字符地为它着色,有没有办法轻松做到这一点?
【问题讨论】:
-
您需要正确设置 `rchtxtbox.SelectionStart' 到适当的字符索引。在您的代码中,选择起点为零,因此它将始终突出显示第一个字符
-
我尝试将值更改为 i 值,但这会突出显示所有匹配项。例如,如果我有“plop”,如果我输入“p”,它将突出显示开始和结束 p's
-
好的,然后从文本框中获取最后一个键控字符,获取它的索引并匹配来自richtextbox的相同索引字符,如果匹配则突出显示那个而不是运行循环
-
哪个事件处理程序有这个代码?
-
文本框的按键事件
标签: c# textbox richtextbox