刷新富文本框
Posted
技术标签:
【中文标题】刷新富文本框【英文标题】:Refreshing the richtextbox 【发布时间】:2012-03-07 20:48:23 【问题描述】:我在我的 win 表单应用程序中使用富文本框。我正在搜索特定文本并突出显示所选文本。假设我正在搜索字符串“he_llo”,因此“he_llo”被突出显示。我将其更正为“你好”。我在按钮单击中调用突出显示功能。如果字符串被更正为 hello,那么它不应该突出显示。但它正在突出显示。
private void btnValidate_Click(object sender, EventArgs e)
Validate();
公共无效验证() 字符串 [] 单词; object[] items = chklbErrorlist.CheckedItems.OfType().ToArray();
for (int i = 0; i < errorList.Count; i++)
//errorList.Add(items[i]);
if (rtbFileDisplay.Text.IndexOf((errorList[i].ToString())) != -1)
wordToFind = errorList[i].ToString();
index = rtbFileDisplay.Text.IndexOf(wordToFind);
lstErrorList.Items.Add(index.ToString());
while (index != -1)
rtbFileDisplay.Select(index, wordToFind.Length);
rtbFileDisplay.SelectionBackColor = Color.Red;
index = rtbFileDisplay.Text.IndexOf(wordToFind, index + wordToFind.Length);
lstErrorList.Items.Add(index.ToString());
#region "Special Char"
foreach (string exp in RegularExpSpChar)
int pos = 0;
char ch = exp[1];
words = null;
words = rtbFileDisplay.Text.Split(ch);
pos = words[0].Length;
Regex myregex;
if (ch.Equals('.'))
string expr = @"^\.+[a-zA-Z]";
myregex = new Regex(expr);
else
myregex = new Regex(exp);
for (int index = 1; index < words.Length; index++)
string line = ch + words[index];
bool isexist = myregex.IsMatch(line);
if (isexist)
rtbFileDisplay.Select(pos, 1);
rtbFileDisplay.SelectionBackColor = Color.Red;
else
rtbFileDisplay.Select(pos, 1);
rtbFileDisplay.SelectionBackColor = Color.White;
pos = pos + line.Length;
#endregion
#region "Special"
foreach (string exp in RegularExpSpecial)
int pos = 0;
char ch = exp[2];
words = null;
switch (ch)
case 'i': tagtype = "</i>";
highlightlen = 5;
break;
case 'b': tagtype = "</b>";
highlightlen = 5;
break;
case 's':
if(exp[3] == 'u' && exp[4] == 'p')
tagtype = "</sup>";
highlightlen = 7;
else if (exp[5] == 'n')
tagtype = "</span>";
highlightlen = 8;
break;
case '8':
if(exp[1] == '#' && exp[4] == '2' && exp[5] == '1')
tagtype = "”";
highlightlen = 8;
else if (exp[1] == '#' && exp[4] == '1' && exp[5] == '1')
tagtype = "’";
highlightlen = 8;
break;
default: break;
words = Regex.Split(rtbFileDisplay.Text, tagtype);
pos = words[0].Length;
Regex myregex;
myregex = new Regex(exp);
for (int index = 1; index < words.Length; index++)
string line = tagtype + words[index];
bool isexist = myregex.IsMatch(line);
if (isexist)
rtbFileDisplay.Select(pos,highlightlen);
rtbFileDisplay.SelectionBackColor = Color.Red;
pos = pos + line.Length;
#endregion
其中 pos 是 he_llo 的索引, highlighten 是 he_llo 的长度。
【问题讨论】:
我不明白这个问题。你告诉它突出显示它正在突出显示。 我正在寻找一个特定的文本说 Hello 。它突出显示。我把它改成了地狱。那个时候应该不是高亮而是它的高亮。 我正在使用 indexof 方法。编辑后文本框不刷新 post 你如何获得pos和highlightlen变量,也许你在更改文本后没有重新计算它们?I am calling the highlight function in the button click
。你忘记点击按钮了。或者从 TextChanged 事件中调用该函数。
【参考方案1】:
您可能只需要突出显示所有文本并将 selectionbackcolor 设置为白色。
【讨论】:
以上是关于刷新富文本框的主要内容,如果未能解决你的问题,请参考以下文章