从FontStyle中提取标志(切换FontStyles)

我有一点问题。 我有一个1 RichTextBox和2个按钮。

我有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. 我选择了文本Italic
  3. 我希望在Bold仍处于活动状态(或相反)时删除Italic

最简单的方法是使用按位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); }