所以我有一串字符,通常格式如下:
“t e xt”,其中粗体字符为红色。
我想在richtextbox中显示这些类型的字符串,粗体字符为红色。
我有一个字符串变量中的文本,并且我在int变量中有红色字符(在字符串中)的位置。
我的解决方案是:
这是我到目前为止所得到的:
https://github.com/icebbyice/rapide/blob/master/rapide/SpreadWindow.xaml.cs
find:“// stackoverflow”(另外,seperateOutputs未完成)
我停在那里因为我认为必须有一种更有效的方法,因为我将经常更改富文本框的内容(最多1000个内容更改/ 60秒)。
那么,有没有更好的方法呢?
答案 0 :(得分:0)
您可以这样做:
// getting keywords/functions
string keywords = @"\b(e)\b";
MatchCollection keywordMatches = Regex.Matches(codeRichTextBox.Text, keywords);
// saving the original caret position + forecolor
int originalIndex = codeRichTextBox.SelectionStart;
int originalLength = codeRichTextBox.SelectionLength;
Color originalColor = Color.Black;
// MANDATORY - focuses a label before highlighting (avoids blinking)
menuStrip1.Focus();
// removes any previous highlighting (so modified words won't remain highlighted)
codeRichTextBox.SelectionStart = 0;
codeRichTextBox.SelectionLength = codeRichTextBox.Text.Length;
codeRichTextBox.SelectionColor = originalColor;
// scanning...
foreach (Match m in keywordMatches)
{
codeRichTextBox.SelectionStart = m.Index;
codeRichTextBox.SelectionLength = m.Length;
codeRichTextBox.SelectionFont = new Font(codeRichTextBox.Font, FontStyle.Bold);
}
// restoring the original colors, for further writing
codeRichTextBox.SelectionStart = originalIndex;
codeRichTextBox.SelectionLength = originalLength;
codeRichTextBox.SelectionColor = originalColor;
codeRichTextBox.SelectionFont = new Font(codeRichTextBox.Font, FontStyle.Regular);
// giving back the focus
codeRichTextBox.Focus();
属于RichTextBox
TextChanged
Event
如果键入 e ,它将显示为粗体。其他任何文本将显示为Font.Regular
如果您要从 e 更改语法,请查看keywords
string
这就是我所拥有的,希望对您有所帮助:)