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

10

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

我有两个按钮用于“切换粗体字”和“切换斜体字”。

我想要在不影响其他字体样式的情况下切换字体样式。我希望你能理解我的意思。

下面的代码可以在组合字体样式时工作,但在分离/减去字体样式时无法正常工作

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. 我想在加粗仍然有效的情况下删除倾斜(或反之亦然)

这种解决方案类似地也适用于 TextBox 控件。请参见下面回答中的我的评论。 - Jim Fell
1个回答

12

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

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

类似的方法也适用于 TextBox 控件。唯一的区别在于上面的示例中的 SelectionFont 需要更改为 Font - Jim Fell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接