2010-11-16 16 views
9

我有一個小問題。我有一個1 RichTextBox和2個按鈕。標誌。減去從FontStyle(繃FontStyles)[C#]

我有2個按鈕爲「切換粗體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. 我把選中的文本斜體
  3. 我想刪除斜體而大膽仍然有效(或相反)
+0

類似的方法來這樣做的解決方案也適用於'TextBox'控件。在下面的答案中看到我的評論。 – 2016-05-20 14:43:03

回答

8

最簡單的方法是使用按位異或(^),它只是切換值:

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

謝謝,它工作! – Dada 2010-11-16 20:25:00

+4

注意!如果當前的文本選擇有多種字體,SelectionFont將爲空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 =真 – Matthieu 2011-11-02 17:28:41

+0

類似的方法也可與'TextBox'對照。不同之處在於上例中的SelectionFont需要更改爲Font。 – 2016-05-20 14:41:56