从字体样式中减去标记(切换字体样式)[C#]

时间:2010-11-16 20:06:15

标签: c# winforms fonts textbox richtextbox

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

我有2个按钮,用于“切换Bold FStyle”和“切换Italic 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. 我选择的文字Bold
  2. 我选择了文字Italic
  3. 我希望在Bold仍处于活动状态(或相反)时删除Italic

1 个答案:

答案 0 :(得分:10)

最简单的方法是使用按位异或(^),它只是切换值:

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