在富文本框中显示彩色文本
本文关键字:文本 显示 彩色 | 更新日期: 2023-09-27 17:55:53
所以我有一串字符,通常格式如下:
"text",其中粗体字符为红色。
我想在富文本框中显示这些类型的字符串,粗体字符为红色。
我在字符串变量中有文本,并且在 int 变量中有红色字符(在字符串中)的位置。
我的解决方案是:
- 获取红色字符之前的字符
- 获取红色字符
- 获取红色字符后面的字符
- 在红色字符之前显示字符
- 显示红色字符(前景 = 画笔.红色)
- 在红色字符后显示字符
这是我到目前为止得到的:
https://github.com/icebbyice/rapide/blob/master/rapide/SpreadWindow.xaml.cs
find: "//stackoverflow" (另外,seperateOutputs未完成)
我停在那里是因为我认为必须有一种更有效的方法,因为我会经常更改富文本框的内容(最多 1000 次内容更改/60 秒)。
那么,有没有更好的方法呢?
你可以
这样做:
// 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
这就是我所拥有的一切,希望对您有所帮助:)