在C#中更改字体?

时间:2012-07-01 02:55:57

标签: c# winforms fonts visual-c#-express-2010

我使用此代码使我的所有文本框都使用相同的字体:

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

让我说我点击粗体按钮。该文将变为粗体。当我点击下划线按钮时,文字应该是粗体和下划线,但它只有下划线???为什么?

3 个答案:

答案 0 :(得分: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中的Enumerations。

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 :(得分: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);
      }

  }

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