0

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

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

可以说我单击粗体按钮。文本将变为粗体。当我单击下划线按钮时,文本应该是粗体并带下划线,但它只是带下划线???为什么?

4

3 回答 3

8

FontStyle是一个枚举,您可以Or将它们一起添加或Xor删除。

IE

为现有样式添加下划线:

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);
}
于 2012-07-01T03:52:50.237 回答
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);
      }

  }
于 2012-07-01T03:17:37.423 回答
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);
于 2012-07-01T03:25:47.820 回答