2010-11-16 9 views
9

Ich habe ein kleines Problem. Ich habe eine 1 RichTextBox und 2 Buttons.Substract Flag von FontStyle (Toggling FontStyles) [C#]

Ich habe diese 2 Tasten für "toggle Bold FStyle" und "toggle Italic FStyle".

Ich möchte FontStyles umschalten, ohne andere FontStyles zu beeinflussen. Ich hoffe du verstehst mich.

Im Folgenden Code funktioniert, wenn Fontstyles kombiniert aber funktioniert nicht, wenn seperating/Substraktion 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. Ich mache ausgewählten Text Bold
  2. wähle ich machen Text Kursiv
  3. Ich möchte Kursiv entfernen, während Bold noch aktiv ist (oder umgekehrt)
+0

Ein ähnlicher Lösungsansatz gilt auch für TextBox-Steuerelemente. Siehe meinen Kommentar in der Antwort unten. –

Antwort

8

Der einfachste Weg ist, Verwenden Sie bitweise XOR (^), die nur den Wert wechselt:

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

Danke, es hat funktioniert !! – Dada

+4

Achtung! Wenn die aktuelle Textauswahl mehr als eine Schriftart enthält, ist SelectionFont gleich 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 = true – Matthieu

+0

Ein ähnlicher Ansatz funktioniert auch mit 'TextBox'-Steuerelementen. Der Unterschied ist, dass 'SelectionFont' im obigen Beispiel in' Font' geändert werden müsste. –