chrs chrs - 8 months ago 65
C# Question

How to make some text bold in a rich text box C#

I want to make a text editor where I can bold, change color etc etc.

I found this code to work roughly:

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

But when I try to type in more letters to the rtf it is still bold..

How can I do so only the selected text is going to bold and the next lines wont unless I select the text and push "Make Bold" button.

Answer Source

You should set the font after the selection to the original font.

If you want you can save the SelectionStart and SelectionLength and call the Select method to select the text again.

// 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);

this way the text stays selected, and the font afterwards is still correct.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download