郵便番号や電話番号、パスワード、コード値など、桁数が決まっている入力項目では、テキストボックスに入力できる文字数が制限されている方が、ユーザービリティが向上する場合があります。
そこで今回は、Windowsフォームアプリケーションのテキストボックスに入力できる文字数を制限する方法を紹介します。
本記事では、Visual Studioで作成したC#のWindowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。
目次
入力できる文字数を設定する
テキストボックスに入力できる文字数を設定するには、System.Windows.Forms名前空間にあるTextBoxクラスのMaxLengthプロパティを使用します。
MaxLengthプロパティにはデフォルト(既定値)として32767が設定されています。
MaxLengthプロパティにはint型の値が設定でき、0からint型の最大値の2147483647が設定できます。
MaxLengthプロパティの値を0にすると、入力可能文字数の制限がなくなります。
MaxLengthプロパティの値は、フォームデザイナーのプロパティグリッド、またはコードで設定することができます。
デザイナーのプロパティグリッドで設定する
フォームデザイナーを開きます。
フォームデザイナーを開いたら、プロパティウィンドウを表示します。
プロパティウィンドウが表示されていない場合は、メニューバーの「表示」メニューにある「プロパティ ウィンドウ」をクリックするかF4キーを押してください。
プロパティウィンドウが表示されたら、フォームに配置したテキストボックスをクリックして選択します。
上記の画像のプロパティグリッドは項目別ではなくアルファベット順で表示しています。
デザイナーのプロパティグリッドにあるMaxLengthプロパティを選択します。
MaxLengthプロパティのテキストボックスに入力を許可する文字数を数値で入力します。
MaxLengthプロパティの値に0~2147483647の範囲外の値を設定すると、エラーが発生します。
コードで設定する
フォームに「textBox1」という名前のテキストボックスを配置し、コードエディタを表示して以下のコードを入力します。
1 2 |
// テキストボックスに入力できる文字数を7桁に設定 this.textBox1.MaxLength = 7; |
上記のコードはフォームのコンストラクタ内や、フォームのロードイベント(Form.Load)メソッド内、またはフォームのオンロード(OnLoad)メソッドをオーバーライドしたメソッド内に記述することで、フォームの起動時に設定することができます。
サンプルプログラム
テキストボックスに入力できる文字数を制限するサンプルプログラムを作成します。
ユーザーインターフェース
フォームには、文字列を入力するテキストボックス(textBox1)と、入力可能文字数を入力するテキストボックス(numericUpDown1)と、入力可能文字数をテキストボックスに反映するボタン(button1)を配置します。
ソースコード
ラジオボタンの選択変更時に文字の種類を設定する処理を記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { // コンストラクタ public Form1() { InitializeComponent(); // 最大入力文字数のテキストボックスを右揃えにする this.numericUpDown1.TextAlign = HorizontalAlignment.Right; } // ボタンクリック時のイベントメソッド private void button1_Click(object sender, EventArgs e) { try { // 最大文字数の設定を反映する this.textBox1.MaxLength = Convert.ToInt32(this.numericUpDown1.Value); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
プログラムの実行
プロジェクトをビルドして実行(デバッグ)してフォームを表示します。
入力可能文字数のテキストボックスに「20」を入力してボタンをクリックします。
テキストボックスに文字列を入力すると20文字までしか入力できないことが確認できます。
上記の状態で入力可能文字数のテキストボックスに「7」を入力してボタンをクリックします。
テキストボックスに文字列が入力されている状態でMaxLengthプロパティの値を変更しても、すでに入力されている文字列がMaxLengthに切り詰められることはありません。MaxLengthプロパティの設置値は、テキストボックスへ文字を入力する時にのみ有効となります。
テキストボックスの値をいったん7文字未満にして再度入力すると、7文字までしか入力できないことが確認できます。