在富文本框中显示彩色文本

本文关键字:文本 显示 彩色 | 更新日期: 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

这就是我所拥有的一切,希望对您有所帮助:)