Как сделать текст в текстовом поле жирным и курсивом в C #? - PullRequest
0 голосов
/ 13 октября 2019

Я новичок в языке C #. Итак, я создал форму в Visual Studio, и на ней есть 3 флажка: «Жирный», «Курсив» и «Подчеркнутый». Также есть текстовое поле. Когда я проверяю флажок «Жирный», он делает мой текст жирным, и все остальные флажки работают так, но когда я пытаюсь проверить 2 или все из них, работает только один из них. Вот код, который я написал для того, чтобы сделать текст жирным и курсивным, установив первый и второй флажок, и он абсолютно не работает:

      if (checkBox1.Checked == true && checkBox2.Checked == true)
            {
                textBox1.Font = new Font(textBox1.Font, FontStyle.Bold);
                textBox1.Font = new Font(textBox1.Font, FontStyle.Italic);
            }

У меня также есть комбинированный список для размера шрифта, и он работает хорошо, но когдаЯ устанавливаю флажок «Жирный», а затем изменяю размер шрифта, он возвращается к обычному стилю шрифта и не остается жирным. Что мне делать?

1 Ответ

2 голосов
/ 13 октября 2019

Вы устанавливаете шрифт дважды, а не комбинируете значения. Если вы посмотрите на определение FontStyle, то увидите, что это битовое поле (оно имеет атрибут flags). Просто или значения. (Обратите внимание, что мы используем побитовое ИЛИ, а не логическое ИЛИ)

        {
            textBox1.Font = new Font(textBox1.Font, FontStyle.Bold | FontStyle.Italic);
        }

Однако было бы лучше структурировать ваш код немного иначе:

FontStyle style;
if (checkBox1.Checked)
{
    style = style | FontStyle.Bold;
}
if (checkBox2.Checked)
{
    style = style | FontStyle.Italic;
}

textBox1.Font = new Font(style);
...