Удалить FontStyle Bold из шрифта элемента управления - PullRequest
3 голосов
/ 20 марта 2012

Я чувствую себя настоящим новичком, публикуя это, но я не могу ничего найти для этого ...

У меня есть элемент управления, который я в основном пытаюсь переключить стиль шрифта между жирным и не жирным шрифтом. Это должно быть просто ...

Однако вы не можете получить доступ к свойству Control.Font.Bold, так как оно доступно только для чтения, поэтому вам нужно изменить свойство Font.

Чтобы сделать это жирным шрифтом, я просто делаю это:

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

Не идеально, но работает. Однако как мне удалить этот жирный стиль (если он уже жирный)?

Я искал дубликаты; ближе всего я мог найти это, но это не совсем соответствует моей ситуации Флаг извлечения из FontStyle (переключение FontStyles) [C #]

И это дает как установить, но не удалить: Изменить шрифт программно

Мне не хватает простого конструктора для шрифта, который мог бы сделать это? Или я просто что-то упустил?

Ответы [ 3 ]

12 голосов
/ 17 декабря 2013

Я знаю, что это немного устарело, но я столкнулся с точно такой же проблемой и придумал это:

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

Магия заключается в "~", которое является побитовым НЕ. (См. Статью MSDN KB «Оператор» )

3 голосов
/ 20 марта 2012

Перечисление FontStyle содержит 5 различных значений.Сброс предыдущего набора: FontStyle.Regular

Обычный Обычный текст.
Полужирный Полужирный текст.
Курсив Курсивный текст.
Подчеркнутый Подчеркнутый текст.
Зачеркнутый Текст с линией, проходящей через середину.

Это побитовое перечисление, где Regular равно 0. Поэтому, если установить только это значение, сбросить все остальные флаги

2 голосов
/ 20 марта 2012

Попробуйте это:

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