我觉得这是一个真正的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
我是否错过了可以执行此操作的字体的简单构造函数?或者我只是错过了一些简单的东西?
答案 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);
}