今回は WindowsForm で
RichTextBox のフォントを
TextBox のフォントと同じ物にする方法について
紹介してみたいと思います。
個人的に RichTextBox のフォントよりも
TextBox のフォントの方が見やすかったため
紹介する事にしました。
また、この手法を使う事で
コピー&ペーストをすると
一部の文字だけフォントが変わる現象も
回避できます。
作業 1 コンストラクタで Font をセットする
まずはコンストラクタで Font をセットします。
private TextBox sampleTextBox; //フィールド
public Form1()
{
InitializeComponent();
sampleTextBox = new TextBox();
richTextBox1.Font = new Font(sampleTextBox.Font.Name, 12, sampleTextBox.Font.Style);
}
TextBox を仮で生成して
RichTextBox のフォントをその内容にしています。
作業 2 で使うため
private TextBox sampleTextBox; の
フィールドを作成しています。
フォントサイズ 12 の部分は
良い感じに調整して下さい。
sampleTextBox.Font.Size でも OK です。
作業 2 keyUp と KeyDown を設定する。
次に richTextBox1_KeyUp と
richTextBox1_KeyDown を設定します。
KeyUP と KeyDown を設定して
内容を以下の内容にします。
sampleTextBox フィールドは
作業 1 で作成したものです。
private void richTextBox1_KeyUp(object sender, KeyEventArgs e)
{
e.Handled = true;
if (e.Modifiers != Keys.Control)
{
richTextBox1.Font = new Font(sampleTextBox.Font.Name, 12, sampleTextBox.Font.Style);
}
}
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Z && e.Modifiers == Keys.Control)
{
richTextBox1.Undo();
richTextBox1.Undo();
}
else if (e.KeyCode == Keys.Y && e.Modifiers == Keys.Control)
{
richTextBox1.Redo();
richTextBox1.Redo();
richTextBox1.Redo();
}
}
フォントが途中で変わらないよう
強引に KeyUP で再代入しています。
こうすればコピ&ペーストした際に
一部の文字だけフォントが変わる現象を
回避する事ができます。
フォントを再代入する事で
Redo と Undo が 1 度では機能しないため
複数回叩いています。
フォントサイズ 12 は
作業 1 のものと同じにして下さい。
フォントサイズ 12 でも
マウスのコロコロで文字サイズを変える機能は
問題無く使えます。
以上の作業で RichTextBox のフォントが
TextBox のフォントと同じになります。
RichTextBox のフォントを調整したい場合は
地味に時間がかかるため
この記事を真似して頂いて
作業時間が短縮できた人が現れたならば
非常に嬉しいです。
この記事が皆さんの役に立てますように。
閲覧ありがとうございました。
追記
この記事を反映した
RichTextBox の挙動を知りたい方は
下記の URL でダウンロードできる
ソフトをご利用頂くと簡単です。(無料です)