今回は文字を修飾する機能を追加します。ツールバーも追加しました。たとえばBボタンを押すと文字が太くなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public partial class Form1 : Form { private void toolStripButtonBold_Click(object sender, EventArgs e) { SyncRichTextBox rich = null; if (syncRichTextBoxEx2.Focused) rich = syncRichTextBoxEx2; else rich = syncRichTextBoxEx1; if (toolStripButtonBold.Checked) rich.SelectionBold = true; else rich.SelectionBold = false; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public partial class Form1 : Form { private void toolStripButtonItalic_Click(object sender, EventArgs e) { SyncRichTextBox rich = null; if (syncRichTextBoxEx2.Focused) rich = syncRichTextBoxEx2; else rich = syncRichTextBoxEx1; if (toolStripButtonItalic.Checked) rich.SelectionItalic = true; else rich.SelectionItalic = false; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public partial class Form1 : Form { private void toolStripButtonStrikeout_Click(object sender, EventArgs e) { SyncRichTextBox rich = null; if (syncRichTextBoxEx2.Focused) rich = syncRichTextBoxEx2; else rich = syncRichTextBoxEx1; if (toolStripButtonStrikeout.Checked) rich.SelectionStrikeout = true; else rich.SelectionStrikeout = false; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public partial class Form1 : Form { private void toolStripButtonUnderline_Click(object sender, EventArgs e) { SyncRichTextBox rich = null; if (syncRichTextBoxEx2.Focused) rich = syncRichTextBoxEx2; else rich = syncRichTextBoxEx1; if (toolStripButtonUnderline.Checked) rich.SelectionUnderline = true; else rich.SelectionUnderline = false; } } |
自作のクラス SyncRichTextBoxを使用しています。フォーカスがどちらのRichTextBoxにあるか調べて、そのBoxで選択されている文字のフォントスタイルを変更します。
参考:RichTextBoxの選択部分のフォントスタイル(太字、斜体、アンダーラインなど)を変更する
選択部分のフォントスタイル(太字、斜体、アンダーラインなど)を変更する 内容が同期されたRichTextBox(その18)
ボタンにはCheckOnClickプロパティを設定しています。これはアイテムがクリックされたときに、その選択された状態を切り替えるべきかを示します。
あとはボタンが押されたらCheckedプロパティがtrueとfalseが切り替わるので、Checkedプロパティを調べてtrueなら設定、falseなら解除しています。
1 2 3 4 5 6 7 8 9 |
private void toolStripButtonBold_Click(object sender, EventArgs e) { // 一部省略 if (toolStripButtonBold.Checked) rich.SelectionBold = true; else rich.SelectionBold = false; } |
では次に、選択されている文字が変更されると、その文字にどのようなフォントスタイルが設定されているか調べて、ボタンが押された状態になったり押されていない状態に切り替わるようにしてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public partial class Form1 : Form { private void syncRichTextBoxEx1_SelectionChanged(object sender, EventArgs e) { toolStripButtonBold.Checked = syncRichTextBoxEx1.SelectionBold; toolStripButtonItalic.Checked = syncRichTextBoxEx1.SelectionItalic; toolStripButtonStrikeout.Checked = syncRichTextBoxEx1.SelectionStrikeout; toolStripButtonUnderline.Checked = syncRichTextBoxEx1.SelectionUnderline; toolStripComboBoxFontName.Text = syncRichTextBoxEx1.SelectionFontName; toolStripComboBoxFontSize.Text = syncRichTextBoxEx1.SelectionFontSize.ToString(); } private void syncRichTextBoxEx2_SelectionChanged(object sender, EventArgs e) { toolStripButtonBold.Checked = syncRichTextBoxEx2.SelectionBold; toolStripButtonItalic.Checked = syncRichTextBoxEx2.SelectionItalic; toolStripButtonStrikeout.Checked = syncRichTextBoxEx2.SelectionStrikeout; toolStripButtonUnderline.Checked = syncRichTextBoxEx2.SelectionUnderline; toolStripComboBoxFontName.Text = syncRichTextBoxEx2.SelectionFontName; toolStripComboBoxFontSize.Text = syncRichTextBoxEx2.SelectionFontSize.ToString(); } } |
複数の選択された文字のフォントスタイルが同じでない場合、選択されていないと判断して、ボタンは押されていない状態になります。またフォント名は空欄になります。
選択されている文字のフォント名はコンボボックスに表示されます。ではコンボボックスからフォントを選択してフォントを変更するにはどうすればいいのでしょうか? これは次回に続きます。