我使用此代码使我的所有文本框都使用相同的字体:
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);
}
}
让我说我点击粗体按钮。该文将变为粗体。当我点击下划线按钮时,文字应该是粗体和下划线,但它只有下划线???为什么?
答案 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);