2012-07-01 104 views
0

我使用此代碼,使我的所有文本框相同的字體:在C#中更改字體?

  if (textBox1.Font.Underline) 
     { 
      foreach (Control y in this.Controls) 
      { 
       if (y is TextBox) 
       { 
        ((TextBox)(y)).Font = new Font(((TextBox)(y)).Font, FontStyle.Regular); 
       } 
      } 
     } 
     else 
     { 
      foreach (Control y in this.Controls) 
      { 
       if (y is TextBox) 
       { 
        ((TextBox)(y)).Font = new Font(((TextBox)(y)).Font, FontStyle.Underline); 
       } 
      } 

可以說,我點擊了加粗按鈕。文字將變爲粗體。當我點擊下劃線按鈕時,文本應該是粗體和下劃線,但它只有下劃線?爲什麼?

回答

7

FontStyle是一個枚舉,你可以Or在一起,以增加或Xor刪除。

添加下劃線到現有的樣式:

textBox1.Font = new Font(textBox1.Font, textBox1.Font.Style | FontStyle.Underline); 

刪除從風格強調:

textBox1.Font = new Font(textBox1.Font, textBox1.Font.Style^FontStyle.Underline); 

,你可以檢查其枚舉是在Font.Style通過這樣做。

if ((textBox1.Font.Style.HasFlag(FontStyle.Underline))) 
{ 
    textBox1.Font = new Font(textBox1.Font, textBox1.Font.Style^FontStyle.Underline); 
} 
else 
{ 
    textBox1.Font = new Font(textBox1.Font, textBox1.Font.Style | FontStyle.Underline); 
} 
1

你可以嘗試使用這樣的事情

List<Control> controls = Controls.OfType<TextBox>().Cast<Control>().ToList(); 
    foreach (Control m in controls) 
    { 
     if (m.Font.Bold) 
     { 
      m.Font = new Font(m.Font, FontStyle.Underline); 
     } 
     else 
     { 
      m.Font = new Font(m.Font, FontStyle.Bold); 
      m.Font = new Font(m.Font, FontStyle.Underline); 
     } 

    } 
+0

它仍然執行相同的操作。我需要它來添加風格。就像如果我有大膽的,我點擊下劃線,我想它粗體和下劃線。 –

+0

@Elite Gamer查看更新 –

+0

請記住,我有一個下劃線按鈕,一個**粗體**按鈕和一個_italic_按鈕 –

0

而不是

((TextBox)(y)).Font = new Font(((TextBox)(y)).Font, FontStyle.Underline); 

使用

((TextBox)(y)).Font = new Font(((TextBox)(y)).Font.FontFamily, ((TextBox)(y)).Font.Size, FontStyle.Underline);