2010-06-21 45 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(); 
相關問題