使用C#突出显示TextBox/Label/RichTextBox中的文本

Mig*_*uel 3 c#

晚安,

我想知道如何突出显示TextBox,Label(最好)或RichTextBox中包含的文本的一部分.例如,给定字符串

"这是一个测试.",

我希望控件显示"这是一个测试.".有什么简单的方法可以做到吗?

非常感谢你.

bra*_*enb 5

RichTextBox r = new RichTextBox();
r.Text = "This is a test";
r.Select(r.Text.IndexOf("test"), "test".Length);
r.SelectionFont = new Font(r.Font, FontStyle.Italic);
r.SelectionStart = r.Text.Length;
r.SelectionLength = 0;
Run Code Online (Sandbox Code Playgroud)

这样的效果将起作用并删除选择.

编辑 在您自己的方法中封装应该相对容易.你甚至可以进行扩展:

public static class Extensions
{
    public static void StyleText(this RichTextBox me, string text, FontStyle style)
    {
        int curPos = me.SelectionStart;
        int selectLen = me.SelectionLength;
        int len = text.Length;
        int i = me.Text.IndexOf(text);

        while (i >= 0)
        {
            me.Select(i, len);
            me.SelectionFont = new Font(me.SelectionFont, style);
            i = me.Text.IndexOf(text, i + len);
        }

        me.SelectionStart = curPos;
        me.SelectionLength = selectLen;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用它像:

richTextBox1.Text = "This is a test";
richTextBox1.StyleText("test", FontStyle.Italic);
Run Code Online (Sandbox Code Playgroud)