Controlla se il testo selezionato su richtextbox è tutto in grassetto o meno

Come verificare se il testo selezionato su richtextbox è tutto in grassetto. Per esempio:

asdasd asd asd ← questo non è tutto in grassetto
Sono tutto audace ← questo è tutto in grassetto

Questo è il codice che ho creato, può controllare se è tutto in grassetto o meno ma è lento perché controlla il char uno alla volta usando Selection.Start su Selection.Length e controlla se grassetto.

 bool allbold = true; int start = richTextBox1.SelectionStart; int end = richTextBox1.SelectionLength; for (int i = 1; i < end; i++) { richTextBox1.SelectionStart = start+i; richTextBox1.SelectionLength = 1; if (!richTextBox1.SelectionFont.Bold) { allbold = false; richTextBox1.SelectionStart = 0; richTextBox1.SelectionLength = 0; richTextBox1.SelectionStart = start; richTextBox1.SelectionLength = end; richTextBox1.Focus(); } } 

C’è un modo efficace di questo?

È ansible controllare richTextBox1.SelectionFont.Bold . Restituisce vero se tutto il testo selezionato è in grassetto.


Per testare, è sufficiente inizializzare RichTextBox con tale valore:

 richTextBox1.SelectedRtf = @"{\rtf1\fbidis\ansi\ansicpg1256\deff0" + @"\deflang1065{\fonttbl{\f0\fnil\fcharset0 Calibri;}}\uc1\pard\ltrpar" + @"\lang9\b\f0\fs72 T\fs22 his\b0 \bi\b0 sa \bt\b0 est.}"; 

Quindi controlla la diversa selezione in questo modo:

 if (richTextBox1.SelectionFont != null) MessageBox.Show(string.Format("{0}", richTextBox1.SelectionFont.Bold));