1
私はwinフォームアプリケーションでリッチテキストボックスを使用しています。私は、perticularテキストを探して、選択されたテキストを強調表示しています。私は文字列 "he_llo"を探しているので、 "he_llo"が強調表示されているとします。私はそれを「こんにちは」に修正しています。私は、ボタンclick.Hfでハイライト機能を呼び出すときに、文字列は、こんにちはに修正され、その時ハイライトしてはいけません。しかし、それは強調しています。richtextboxをリフレッシュする
private void btnValidate_Click(object sender, EventArgs e)
{
Validate();
}
公共ボイド検証(){ 列[]の単語; オブジェクト[] 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の長さです。
私はこの問題を理解していません。ハイライトして強調表示しています。 –
私はハッピーテキストを探しています。それはハイライト。私はそれを地獄に変えた。その時、それは強調表示されず強調表示されます。 –
私はindexofメソッドを使用しています。編集後にテキストボックスが更新されない –