从Control的字体中删除FontStyle Bold

时间:2012-03-19 20:58:43

标签: c# winforms fonts controls bold

我觉得这是一个真正的noob帖子,但我似乎找不到任何东西......

我有一个控件,我基本上试图在粗体和非粗体之间切换fontstyle。这应该很简单......

但是,您无法访问Control.Font.Bold属性,因为它是只读的,因此,您需要更改Font属性。

为了大胆,我只是这样做:

this.btn_buttonBolding.Font = new Font(this.btn_buttonBolding.Font, FontStyle.Bold);

不理想,但它有效。但是,如何删除这个粗体样式(一旦它是粗体)?

我很难看重复;最接近我能找到的是这个,但它并没有完全回答我的情况: Substract Flag From FontStyle (Toggling FontStyles) [C#]

这就是如何设置它,但不删除它:Change a font programmatically

我是否错过了可以执行此操作的字体的简单构造函数?或者我只是错过了一些简单的东西?

3 个答案:

答案 0 :(得分:12)

我知道这有点老了,但我遇到了完全相同的问题并提出了这个问题:

Font opFont = this.btn_buttonBolding.Font;
if(value)
{
    this.btn_buttonBolding.Font = new Font(opFont, opFont.Style | FontStyle.Bold);
}
else 
{
    this.btn_buttonBolding.Font = new Font(opFont, opFont.Style & ~FontStyle.Bold);
}

魔法在“〜”中,即按位NOT。 (参见MSDN KB article "~Operator"

答案 1 :(得分:3)

FontStyle枚举包含5个不同的值。 重置以前的设置的是 FontStyle.Regular

常规普通文字。
 大胆大胆的文字。
 斜体斜体文字。
 下划线带下划线的文字。
  Strikeout 文字中间有一条线。

这是一个按位枚举,其中Regular为0.因此,设置此值会重置所有其他标志

答案 2 :(得分:2)

试试这个:

    private void btn_buttonBolding_Click(object sender, EventArgs e)
    {
        var style = btn_buttonBolding.Font.Bold ? FontStyle.Regular : FontStyle.Bold;
        btn_buttonBolding.Font = new Font(this.Font, style);
    }