Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NET中富文本框中的彩色文本_C#_.net_Vb.net - Fatal编程技术网

C# NET中富文本框中的彩色文本

C# NET中富文本框中的彩色文本,c#,.net,vb.net,C#,.net,Vb.net,我有丰富的文本框来编辑XML文本 我想要的是如何为RichTextBox中的XML标记名称着色 我想要红色或绿色的标签名称。 有什么办法吗?MSDN创建了一个简单的C函数,用于格式化RichTextBox中的文本内容: Check out,一个很好的Windows源代码编辑组件,也支持语法高亮显示。它有一个.NET包装,名为。使用一个简单的正则表达式查找每个标记的位置(开始和结束),并将其着色,如下所示: richtextbox1.Select(start, end-start); richt

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

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

Check out,一个很好的Windows源代码编辑组件,也支持语法高亮显示。它有一个.NET包装,名为。

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

richtextbox1.Select(start, end-start);

richtextbox1.SelectionColor = Color.Green;

richtextbox1.Select(start, 0);

有些文章解释或建议语法着色的可能方法,例如:


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

找出你想要的正则表达式在使用什么。一旦有了它,您就可以使用类似以下的方法来更新
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作为完整的语法高亮显示工具,如下面的一个答案所述…

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

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

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


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