Substract Flag From FontStyle (Toggling FontStyles) [C#]

感情迁移 提交于 2019-11-27 03:24:52

问题


I have a little problem. I have one 1 RichTextBox and 2 Buttons.

I have that 2 buttons for "toggle Bold FStyle" and "toggle Italic FStyle".

I want to toggle FontStyles without affecting other FontStyles. I hope you understand me.

Below code works when combining FontStyles but is not working when seperating/substracting 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. I make selected text Bold
  2. I make selected text Italic
  3. I want to remove Italic while Bold is still active (or opposite)

回答1:


The easiest way is to use bitwise XOR (^), which just toggles the value:

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


来源:https://stackoverflow.com/questions/4198429/substract-flag-from-fontstyle-toggling-fontstyles-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!