テキストボックスにタブ文字(Tab)を入力できるようにする [C#] TextBox

Windowsフォームアプリケーションのフォームに配置したテキストボックスのMultilineプロパティをTrueに設定すると、複数行のテキストを入力することができます。

テキストボックスに複数行の文字列を入力できるように設定する [C#] TextBox
Windowsフォームアプリケーションのテキストボックス(TextBox)に改行(リターン)を入力できるようにする方法を紹介します。 ...

複数行入力できるようにしたテキストボックスを配置したテキストエディターのようなアプリケーションを作成する際に、Tabキーを押してタブ文字を入力した場合があります。

今回はテキストボックスでタブ文字を入力できるようにする方法を紹介します。

本記事では、Visual Studioで作成したC#のWindowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。

Windowsフォームアプリケーションのプロジェクト(ソリューション)を作成する。[C#]
Visual StudioでC#のWindowsフォームアプリケーションのプロジェクト(ソリューション)を作成する方法を記載します。 ...

テキストボックスにタブ文字(Tab)を入力可能にする

WindowsフォームのテキストボックスでTabSystem.Windows.Forms名前空間にあるTextBoxクラスのAcceptsTabプロパティを使用します。

AcceptsTabプロパティの設定は、MultilineプロパティがTrueに設定されている場合(テキストボックスに複数行の入力が許可されている場合)にのみ有効になります。

AcceptsTabプロパティは、フォームデザイナーのプロパティグリッド、またはコードで設定することができます。

デザイナーのプロパティグリッドで設定する

フォームデザイナーを開きます。
フォームデザイナーを開いたら、プロパティウィンドウを表示します。
プロパティウィンドウが表示されていない場合は、メニューバーの「表示」メニューにある「プロパティ ウィンドウ」をクリックするかF4キーを押してください。
プロパティウィンドウが表示されたら、フォームに配置したテキストボックスをクリックして選択します。

フォームデザイナーのテキストボックスのプロパティグリッド
上記の画像のプロパティグリッドは項目別ではなくアルファベット順で表示しています。

デザイナーのプロパティグリッドにあるAcceptsTabプロパティを選択します。
AcceptsTabプロパティのドロップダウンリストボックスからTrueを選択します。

デザイナーのプロパティグリッドでTextBoxクラスのAcceptsTabプロパティを設定

コードで設定する

フォームに「textBox1」という名前のテキストボックスを配置し、コードエディタを表示して以下のコードを入力します。

上記のコードはフォームのコンストラクタ内や、フォームのロードイベント(Form.Load)メソッド内、またはフォームのオンロード(OnLoad)メソッドをオーバーライドしたメソッド内に記述することで、フォームの起動時に設定することができます。

サンプルプログラム

サンプルとして複数行のテキストを入力できるテキストボックスを配置して、Tabキーを押した時にタブ文字が入力できるようにするプログラムを作成します。

ユーザーインターフェース

フォームには、テキストを編集するテキストボックス(textBox1)と、タブ文字の入力可否を設定するボタン(button1)を配置します。

テキストボックスのAcceptsTabプロパティ設定用のサンプルフォームのデザイン

テキストボックスは、Multilineプロパティの値をTrueに設定して複数行入力できるようにし、フォームに合わせて高さを広げておきます。

ソースコード

ボタンがクリックされた時のイベント処理を記述します。

プログラムの実行

プロジェクトをビルドして実行(デバッグ)してフォームを表示します。

テキストボックスのAcceptsTabプロパティ設定用のサンプルフォームを起動

テキストボックスにタブ文字を含んだ文字列を入力します。

テキストボックスのAcceptsTabプロパティ設定用のサンプルフォームで文字列を入力

Tabキーで、タブ文字が入力できるのが確認できます。

ボタン(button1)をクリックしてタブ文字が入力できないようにします。

Tabキーを押してもタブ文字が入力できなくなり、ボタンにフォーカスが移動します。

テキストボックスのAcceptsTabプロパティ設定用のサンプルフォームでタブ文字の入力を無効に設定した後の動作