テキストボックスに入力できる文字数(最大桁数)を制限する [C#] TextBox

郵便番号や電話番号、パスワード、コード値など、桁数が決まっている入力項目では、テキストボックスに入力できる文字数が制限されている方が、ユーザービリティが向上する場合があります。

そこで今回は、Windowsフォームアプリケーションのテキストボックスに入力できる文字数を制限する方法を紹介します。

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

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

入力できる文字数を設定する

テキストボックスに入力できる文字数を設定するには、System.Windows.Forms名前空間にあるTextBoxクラスのMaxLengthプロパティを使用します。

MaxLengthプロパティにはデフォルト(既定値)として32767が設定されています。
MaxLengthプロパティにはint型の値が設定でき、0からint型の最大値の2147483647が設定できます。
MaxLengthプロパティの値を0にすると、入力可能文字数の制限がなくなります。

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

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

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

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

デザイナーのプロパティグリッドにあるMaxLengthプロパティを選択します。
MaxLengthプロパティのテキストボックスに入力を許可する文字数を数値で入力します。

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

MaxLengthプロパティの値に0~2147483647の範囲外の値を設定すると、エラーが発生します。

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

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

コードで設定する

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

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

サンプルプログラム

テキストボックスに入力できる文字数を制限するサンプルプログラムを作成します。

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

フォームには、文字列を入力するテキストボックス(textBox1)と、入力可能文字数を入力するテキストボックス(numericUpDown1)と、入力可能文字数をテキストボックスに反映するボタン(button1)を配置します。

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

ソースコード

ラジオボタンの選択変更時に文字の種類を設定する処理を記述します。

プログラムの実行

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

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

入力可能文字数のテキストボックスに「20」を入力してボタンをクリックします。

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

テキストボックスに文字列を入力すると20文字までしか入力できないことが確認できます。

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

上記の状態で入力可能文字数のテキストボックスに「7」を入力してボタンをクリックします。

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

テキストボックスに文字列が入力されている状態でMaxLengthプロパティの値を変更しても、すでに入力されている文字列がMaxLengthに切り詰められることはありません。MaxLengthプロパティの設置値は、テキストボックスへ文字を入力する時にのみ有効となります。

テキストボックスの値をいったん7文字未満にして再度入力すると、7文字までしか入力できないことが確認できます。

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