Readonly richtextbox更改关键字C#的颜色

时间:2015-04-01 16:29:49

标签: c# winforms colors richtextbox

我有一个富文本框,我用它来显示Hello World程序的示例,并希望使用'使用'等关键字。 '命名空间' '类' '静态' '空隙' '串'显示蓝色。

我已经使用了'显示蓝色,但仅当用户开始输入或键​​入'使用' 我希望只读取richtextbox,不允许用户输入

这是我的代码:

    private void rtb_TextChanged(object sender, EventArgs e)
    {
        string find = "using";
        if (rtb.Text.Contains(find))
        {
            var matchString = Regex.Escape(find);
            foreach (Match match in Regex.Matches(rtb.Text, matchString))
            {
                rtb.Select(match.Index, find.Length);
                rtb.SelectionColor = Color.Blue;
                rtb.Select(rtb.TextLength, 0);
                rtb.SelectionColor = rtb.ForeColor;
            };
        }
    }

我无法弄清楚如何为readonly rtb做这件事。 我如何编辑我的代码以在readonly rtb初始化时显示蓝色文本

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

无需订阅TextChanged活动。

将代码放在一个单独的方法中:

private void ApplySyntaxHighlite()
{
    string find = "using";
    if (richTextBox1.Text.Contains(find))
    {
        var matchString = Regex.Escape(find);
        foreach (Match match in Regex.Matches(richTextBox1.Text, matchString))
        {
            richTextBox1.Select(match.Index, find.Length);
            richTextBox1.SelectionColor = Color.Blue;
            richTextBox1.Select(richTextBox1.TextLength, 0);
            richTextBox1.SelectionColor = richTextBox1.ForeColor;
        };
    }
}

RichTextBox

中设置文字后调用它
richTextBox1.Text =
    "using System;\r\nusing System.IO;\r\n\r\nConsole.WriteLine(\"Hello world.\");";

ApplySyntaxHighlite();

enter image description here