从FontStyle中提取标志(切换FontStyles)[C#]

Dad*_*ada 9 c# fonts textbox richtextbox winforms

我有一点问题.我有一个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));
}
Run Code Online (Sandbox Code Playgroud)
  1. 我选择了大胆的文字
  2. 我选择了文本Italic
  3. 我希望在Bold仍处于活动状态(或相反)时删除Italic

Hei*_*nzi 10

最简单的方法是使用按位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);
}
Run Code Online (Sandbox Code Playgroud)

  • 小心 !如果当前文本选择具有多个字体,则SelectionFont将为null http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(SYSTEM.WINDOWS.FORMS.RICHTEXTBOX.SELECTIONFONT ); K(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22); K(DevLang-VB)RD =真 (4认同)