Right now I am using some buttons with the following code:
richTextBox1.SelectionFont = new Font(\"Tahoma\", 12, FontStyle.Bold);
richTextBox1.SelectionColor = S
What you really need to change both existing and coming text is this:
if (richTextBox2.SelectionLength > 0 ) richTextBox2.SelectionFont =
new Font(richTextBox1.SelectionFont, FontStyle.Bold | richTextBox1.SelectionFont.Style);
else richTextBox2.Font =
new Font(richTextBox1.Font, FontStyle.Bold | richTextBox1.Font.Style);
Note that in order to work the selection must not have a mix of styles..
Also you probably ought to use CheckBoxes
with Appearence=Button
If you are using those CheckBoxes make sure you don't code their default event CheckedChanged
as this would also fire when you set their state in code!
To switch a Style on and off you can use maybe code like this in the Click
events of the style boxes:
FontStyle style = checkBox1.CheckState == CheckState.Checked ?
FontStyle.Italic : FontStyle.Regular;
if (richTextBox2.SelectionLength > 0) richTextBox2.SelectionFont =
new Font(richTextBox1.SelectionFont, style | richTextBox1.SelectionFont.Style);
else richTextBox2.Font =
new Font(richTextBox1.Font, style | richTextBox1.Font.Style);
This first decides on the new state to set and then set it.
note that I did not use the Checked Property of the CheckBox! To reflect a selection with a mix of bold and non-bold text we need a third state, so the CheckBoxes should have ThreeState=true
.
Code to set the states on only two style boxes could look like this:
private void richTextBox2_SelectionChanged(object sender, EventArgs e)
{
// mixed state:
if (richTextBox2.SelectionFont == null)
{
checkBox1.CheckState = CheckState.Indeterminate;
checkBox2.CheckState = CheckState.Indeterminate;
return;
}
checkBox1.Checked =
(richTextBox2.SelectionFont.Style & FontStyle.Bold) == FontStyle.Bold;
checkBox2.Checked =
(richTextBox2.SelectionFont.Style & FontStyle.Italic) == FontStyle.Italic;
}
Starting to look a little larger than you thought at the beginning? Well, it is.. take your time!! (And we haven't even begun with Fonts and sizes ;-)