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

3

晚上好,

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

“This is a test.”,

我希望控件显示“This is a test.”。有没有简单的方法可以做到这一点?

非常感谢。

2个回答

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;

类似这样的内容可以起到作用并删除选择。

编辑 将其封装在自己的方法中应该相对容易。你甚至可以制作一个扩展程序:

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;
    }
}

然后像这样使用:

richTextBox1.Text = "This is a test";
richTextBox1.StyleText("test", FontStyle.Italic);

0
使用RichTextBox大致如下:
textbox.Text = "This is a test.";
textbox.Select(10, 4);
textbox.SelectionFont = new Font(textBox.SelectionFont, FontStyle.Italic);

单个标签上不可能实现这一点,但您可以使用两个标签。

我对样式是否可写现在有些不确定。

编辑:已修复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接