1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【WindowsForm】RichTextBox のフォントを TextBox のフォントと同じにする

Last updated at Posted at 2024-12-16

今回は WindowsForm で
RichTextBox のフォントを
TextBox のフォントと同じ物にする方法について
紹介してみたいと思います。

個人的に RichTextBox のフォントよりも
TextBox のフォントの方が見やすかったため
紹介する事にしました。

また、この手法を使う事で
コピー&ペーストをすると
一部の文字だけフォントが変わる現象も
回避できます。


作業 1 コンストラクタで Font をセットする

まずはコンストラクタで Font をセットします。

作業 1
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 で作成したものです。

作業 2
        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 でダウンロードできる
ソフトをご利用頂くと簡単です。(無料です)

GoogleDrive でダウンロードする
BOOTH でダウンロードする

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?