2011-10-28 15 views
10

Voglio fare un editor di testo dove posso grassetto, cambiamento di colore ecc eccCome per rendere il testo in grassetto in un ricco casella di testo C#

Ho trovato questo codice per lavorare o meno:

public static void BoldSelectedText(RichTextBox control) 
{ 
    control.SelectionFont = new Font(control.Font.FontFamily, control.Font.Size,   FontStyle.Bold); 
} 

Ma quando provo a digitare più lettere su rtf è ancora in grassetto ..

Come posso fare solo il testo selezionato sta andando in grassetto e le righe successive non lo faranno a meno che non selezioni il testo e prema "Rendi Grassetto ".

risposta

14

È necessario impostare il carattere dopo la selezione sul carattere originale.

Se si desidera, è possibile salvare SelectionStart e SelectionLength e chiamare il metodo Select per selezionare nuovamente il testo.

// Remember selection 
int selstart = control.SelectionStart; 
int sellength = control.SelectionLength; 

// Set font of selected text 
// You can use FontStyle.Bold | FontStyle.Italic to apply more than one style 
control.SelectionFont = new Font(control.Font, FontStyle.Bold); 

// Set cursor after selected text 
control.SelectionStart = control.SelectionStart + control.SelectionLength; 
control.SelectionLength = 0; 
// Set font immediately after selection 
control.SelectionFont = control.Font; 

// Reselect previous text 
control.Select(selstart, sellength); 

in questo modo il testo rimane selezionato e il carattere in seguito è ancora corretto.

+0

thx, che ha funzionato :) – chrs

+0

Sai come posso il testo in grassetto e in corsivo? – chrs

+1

http://stackoverflow.com/questions/4198429/substract-flag-from-fontstyle-toggling-fontstyles-c che ha aiutato – chrs

Problemi correlati