Флаг вычленения из FontStyle (переключение FontStyles) [C #] - PullRequest
9 голосов
/ 16 ноября 2010

У меня маленькая проблема.У меня есть одна 1 RichTextBox и 2 кнопки.

У меня есть две кнопки для «переключения Bold FStyle» и «переключения курсива FStyle».

Я хочу переключать FontStyles, не затрагивая другие FontStyles.Я надеюсь, что вы меня понимаете.

Ниже код работает, когда объединяет FontStyles, но не работает при разделении / вычитании FontStyles .

private void button1_Click(object sender, EventArgs e)
{
    richTextBox1.SelectionFont = new Font(richTextBox1.Font, (richTextBox1.SelectionFont.Bold == false ? richTextBox1.SelectionFont.Style | FontStyle.Bold : richTextBox1.SelectionFont.Style));
}

private void button2_Click(object sender, EventArgs e)
{
    richTextBox1.SelectionFont = new Font(richTextBox1.Font, (richTextBox1.SelectionFont.Italic == false ? richTextBox1.SelectionFont.Style | FontStyle.Italic : richTextBox1.SelectionFont.Style));
}
  1. Я выделяю выделенный текст полужирным шрифтом
  2. Я выделяю выделенный текст курсивом
  3. Я хочу удалить курсив, пока жирный шрифт еще активен (или наоборот)

1 Ответ

10 голосов
/ 16 ноября 2010

Самый простой способ - использовать побитовый XOR (^), который просто переключает значение:

private void button1_Click(object sender, EventArgs e)
{
    richTextBox1.SelectionFont = new Font(richTextBox1.Font,
        richTextBox1.SelectionFont.Style ^ FontStyle.Bold);
}

private void button2_Click(object sender, EventArgs e)
{
    richTextBox1.SelectionFont = new Font(richTextBox1.Font,
        richTextBox1.SelectionFont.Style ^ FontStyle.Italic);
}
...