从FontStyle中减去标志(切换FontStyles)[C#]
我有个小问题。我有一个1 RichTextBox和两个按钮 我有两个按钮“切换粗体FStyle”和“切换斜体FStyle” 我希望在不影响其他字体样式的情况下切换字体样式。我希望你能理解我 下面的代码在组合字体样式时有效,但在分离/删除字体样式时无效从FontStyle中减去标志(切换FontStyles)[C#],c#,winforms,fonts,textbox,richtextbox,C#,Winforms,Fonts,Textbox,Richtextbox,我有个小问题。我有一个1 RichTextBox和两个按钮 我有两个按钮“切换粗体FStyle”和“切换斜体FStyle” 我希望在不影响其他字体样式的情况下切换字体样式。我希望你能理解我 下面的代码在组合字体样式时有效,但在分离/删除字体样式时无效 private void button1_Click(object sender, EventArgs e) { richTextBox1.SelectionFont = new Font(richTextBox1.Font, (richT
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));
}
最简单的方法是使用位异或(
^
),它只需切换值:
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);
}
当心!如果当前文本选择有多个字体,则SelectionFont将为null类似的方法也适用于
TextBox
控件。区别在于上面示例中的SelectionFont
需要更改为Font
。类似的解决方案也适用于TextBox
控件。请参阅下面答案中的我的评论。