2010-06-21 97 views

回答

128

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

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

然后再回到:

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

谢谢!哇,这比我想象的容易得多。所以我想这意味着字体就像一个字符串,一旦你创建它,你就不能改变它。你只能声明它的一个新实例。 – Diskdrive 2010-06-21 23:05:02

+2

是的,它表现得像字符串一样,一旦创建就无法改变其状态,即它是[不可变](http://en.wikipedia.org/wiki/Immutable_object)。但是,尽管有一些MSDN文章指出Font是不可变的,但Font本身的实际引用并未说明这一点。 – 2010-06-21 23:09:47

+0

为一个linkbutton这为我工作︰button.Font.Bold = true – deebs 2015-07-01 18:53:55

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); 
     } 
    } 
} 
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(); 
相关问题