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

时间:2010-06-21 22:47:31

标签: c# winforms textbox fonts

我正在使用Windows表单,我有一个文本框,如果它是一定值,我偶尔会喜欢使文本变粗。

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

我看到有一个名为textbox1.Font.Bold的属性,但这是一个Get only属性。

5 个答案:

答案 0 :(得分:154)

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

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

然后又回来了:

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

答案 1 :(得分:2)

根据您的应用程序,您可能希望在文本更改或相关文本框的焦点/非焦点上使用该字体分配。

以下是一个快速示例(它只是一个文本框)。当文本显示为'粗体'时,字体变为粗体,不区分大小写:

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

答案 2 :(得分: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();

答案 3 :(得分:1)

以下是切换粗体,下划线和斜体的示例。

   protected override bool ProcessCmdKey( ref Message msg, Keys keyData )
   {
      if ( ActiveControl is RichTextBox r )
      {
         if ( keyData == ( Keys.Control | Keys.B ) )
         {
            r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Bold ); // XOR will toggle
            return true;
         }
         if ( keyData == ( Keys.Control | Keys.U ) )
         {
            r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Underline ); // XOR will toggle
            return true;
         }
         if ( keyData == ( Keys.Control | Keys.I ) )
         {
            r.SelectionFont = new Font( r.SelectionFont, r.SelectionFont.Style ^ FontStyle.Italic ); // XOR will toggle
            return true;
         }
      }
      return base.ProcessCmdKey( ref msg, keyData );
   }

答案 4 :(得分:-3)

 txtText.Font = new Font("Segoe UI", 8,FontStyle.Bold);
 //Font(Font Name,Font Size,Font.Style)