如何在运行时将文本框的文本设置为粗体?


98

我正在使用Windows窗体,并且有一个文本框,如果有一定的值,我有时会希望使其变为粗体。

如何在运行时更改字体特征?

我看到有一个名为textbox1.Font.Bold的属性,但这是一个“仅获取”属性。

Answers:


181

字体本身的粗体属性是只读的,而文本框的实际字体属性不是。您可以将文本框的字体更改为粗体,如下所示:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Bold);

然后再次返回:

  textBox1.Font = new Font(textBox1.Font, FontStyle.Regular);

1
谢谢!哇,那比我想象的容易得多。所以我想这意味着字体就像一个字符串,一旦创建,就无法更改。您只能声明它的新实例。
Diskdrive

2
是的,就好像一旦创建就无法更改其状态,即不可变,它的行为就像字符串。但是,尽管有MSDN文章提到Font是不可变的,但Font本身的实际参考并未说明这一点。
Tim Lloyd 2010年

对于linkbutton,这对我有用:button.Font.Bold = true
deebs 2015年

可以对部分文字执行相同的操作吗?我的意思是我只想突出显示文本的一部分。
艾尼尔(Annil)'18年

3

根据您的应用程序,您可能需要在有关文本框的文本更改或焦点/未焦点上使用该字体分配。

这是它的外观的一个快速示例(空格式,只有一个文本框。当文本读取为“粗体”时,字体变为粗体,不区分大小写):

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        RegisterEvents();
    }

    private void RegisterEvents()
    {
        _tboTest.TextChanged += new EventHandler(TboTest_TextChanged);
    }

    private void TboTest_TextChanged(object sender, EventArgs e)
    {
        // Change the text to bold on specified condition
        if (_tboTest.Text.Equals("Bold", StringComparison.OrdinalIgnoreCase))
        {
            _tboTest.Font = new Font(_tboTest.Font, FontStyle.Bold);
        }
        else
        {
            _tboTest.Font = new Font(_tboTest.Font, FontStyle.Regular);
        }
    }
}

1

您可以使用以下Extension方法在常规样式粗体样式之间进行切换:

static class Helper
    {
        public static void SwtichToBoldRegular(this TextBox c)
        {
            if (c.Font.Style!= FontStyle.Bold)
                c.Font = new Font(c.Font, FontStyle.Bold);
            else
                c.Font = new Font(c.Font, FontStyle.Regular);
        }
    }

和用法:

textBox1.SwtichToBoldRegular();

0
 txtText.Font = new Font("Segoe UI", 8,FontStyle.Bold);
 //Font(Font Name,Font Size,Font.Style)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.