从Control的字体中删除FontStyle Bold

ImG*_*reg 3 c# fonts controls bold winforms

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

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

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

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

this.btn_buttonBolding.Font = new Font(this.btn_buttonBolding.Font, FontStyle.Bold);
Run Code Online (Sandbox Code Playgroud)

不理想,但它的工作原理.但是,我如何去除这种大胆的风格(一旦它已经是粗体)?

我看起来很难重复; 最接近我能找到的是这个,但它并不能完全回答我的情况: 从FontStyle中提取标志(切换FontStyles)[C#]

这将提供如何设置它,但不删除它:以编程方式更改字体

我错过了一个可以做到这一点的字体的简单构造函数吗?或者我只是错过了一些简单的东西?

Ben*_*ene 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);
}
Run Code Online (Sandbox Code Playgroud)

神奇的是"〜",即按位NOT.(请参阅MSDN 知识库文章"〜运算符")


Ste*_*eve 4

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

常规 普通文本。
粗体 粗体文本。
斜体 斜体文本。
下划线 带下划线的文本。
删除线 中间有一条线的文本。

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