【问题标题】:Color Text in Rich Text Box in .NET.NET 富文本框中的彩色文本
【发布时间】:2012-10-22 16:56:10
【问题描述】:

我有富文本框来编辑 XML 文本 我想要如何为 RichTextBox 中的 XML 标签名称着色
我想要红色或绿色的标签名称。
有什么办法吗?

【问题讨论】:

  • 你的意思是你想要一个处理 XML 格式文档的语法编辑器吗?

标签: c# .net vb.net


【解决方案1】:

使用this page 找出您想要的正则表达式。一旦你有了这个,你可以使用类似下面的方法来更新RichTextBox

public static void HighlightSyntax(RichTextBox richTextBox, Regex yourRegex, Color someColor)
{
    richTextBox.BeginUpdate();
    int selPos = richTextBox.SelectionStart;
    richTextBox.SelectAll();
    richTextBox.SelectionColor = normTextColor;
    richTextBox.Select(selPos, 0);

    // For each match from the regex, highlight the word.
    foreach (Match keyWordMatch in yourRegex.Matches(richTextBox.Text))
    {
        richTextBox.Select(keyWordMatch.Index, keyWordMatch.Length);
        richTextBox.SelectionColor = someColor;
        richTextBox.Select(selPos, 0);
        richTextBox.SelectionColor = normTextColor;
    }
    richTextBox.EndUpdate();
}

您也可以采用计时器在设定的时间后自动更新。

我希望这会有所帮助。

注意。对于大型文本文件,这样的方法会很慢!在这种情况下,我会采用 Sinctilla.NET 作为完整的语法荧光笔,如以下答案之一所述...

【讨论】:

    【解决方案2】:

    有些文章解释或建议了可能的语法着色方法,例如:How To Implement Syntax Highlighting In A WinForms Application

    我认为最好和最简单的方法是使用Scintilla.NET 来处理它,这样你就可以专注于对你来说真正重要的事情,而不是重新发明轮子:)

    【讨论】:

      【解决方案3】:

      MSDN 创建了一个简单的 C# 函数,用于格式化 RichTextBox 中的文本内容: LINK

      【讨论】:

        【解决方案4】:

        使用一个简单的正则表达式找到每个标签的位置(开始和结束),并将其着色,如下所示:

        richtextbox1.Select(start, end-start);
        
        richtextbox1.SelectionColor = Color.Green;
        
        richtextbox1.Select(start, 0);
        

        【讨论】:

          【解决方案5】:

          查看scintilla,这是一个不错的 Windows 源代码编辑组件,它也支持语法高亮。还有一个 .NET 包装器,名为 ScintillaNET

          【讨论】:

            【解决方案6】:

            我认为对于小型语法高亮项目,自己动手吧!已经发布了一些在语法编辑器中突出显示的示例。

            https://stackoverflow.com/a/13007641/1033686

            https://stackoverflow.com/a/13007710/1033686

            对于需要更好地突出显示的大型项目,请使用 Scintilla.NET(但请注意,它有点重,而且很难开始工作!)

            http://scintillanet.codeplex.com/

            对于企业项目,请使用诸如 actipro 语法编辑器之类的商业产品。

            http://www.actiprosoftware.com/products/controls/windowsforms/syntaxeditor?gclid=CI6rrqmglLMCFSfMtAodbE8AhA

            【讨论】:

              猜你喜欢
              • 2021-12-01
              • 2023-03-11
              • 2010-12-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-05-06
              • 1970-01-01
              相关资源
              最近更新 更多