訪問して頂きありがとうございます。まさふくろーです。
この記事では、テキストボックスに入力できる文字数を制限する方法をご紹介します。
目次
テキストボックスに入力できる文字数を制限する
使用するプロパティ
MaxLengthプロパティ
解説 |
テキストボックスに入力できる文字数を制限するには、MaxLengthプロパティを使用します。 |
MaxLengthプロパティには、入力可能な文字数を指定します。 | |
MaxLengthプロパティで設定した文字数を超える文字は入力できません。 |
設定手順
おおまかな流れ
Step.1テキストボックスを選択Step.2MaxLengthプロパティの設定
詳細
Step.1 テキストボックスを選択
「テキストボックス」コントロールを選択します。
Step.2 MaxLengthプロパティの設定
メニューバーの①「表示」タブをクリック⇒②「プロパティウィンドウ」を選択します。
プロパティウィンドウの「MaxLength」欄に「入力可能な文字数」を設定します。
すると、設定した文字数を超える文字は入力できないようになります。
プログラムでの設定
MaxLengthを設定するサンプルプログラム
1 2 3 4 5 6 7 |
Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load TextBox1.MaxLength = 10 End Sub End Class |
2 | 画面起動時に以下処理を行う。 |
4 | テキストボックス1に入力可能な文字数を10文字に設定する。 |
バイト数で制限するには
MaxLengthプロパティは、全角(2バイト)、半角(1バイト)に関係なく文字数で制限をかけます。
バイト数で制限をかけるには、プログラムで制御する必要があります。
サンプルプログラムは以下になります。
バイト数で制限をかけるサンプルプログラム
名前空間のインポート
1 |
Imports System.Text |
2 | 文字エンコーディングを使うため、System.Text名前空間をインポート。 |
キーボード入力時の制御
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Public Class Form1 Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress Dim stTarget As String Dim btBytes As Byte() stTarget = sender.text btBytes = Encoding.GetEncoding("Shift_JIS").GetBytes(stTarget) If btBytes.Length >= 10 Then If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Back) Then e.Handled = False Else e.Handled = True End If End If End Sub End Class |
2 | キーボード入力時に以下処理を行う。 |
7 | テキストボックスに入力した値を取得し、変数「stTarget 」に格納。 |
8 | 変数「stTarget 」の値をShift_JIS変換し、バイト型配列の変数「btBytes 」に格納。 |
10 | テキストボックスに入力したバイト数が10バイト以上の場合、以下処理を行う。 |
11 | 「BackSpace」キーが押された場合は、以下「12」行目の処理を行う。 |
12 | テキストボックスへの入力を許可する。 |
13 | 「BackSpace」キー以外のキーが押された場合は、以下「14」行目の処理を行う。 |
14 | テキストボックスへの入力を禁止する。 |
コピー&ペースト時の制御
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Public Class Form1 Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus Dim stTarget As String '→テキストに入力された文字 Dim btBytes As Byte() Dim MidBStr As String stTarget = sender.text btBytes = Encoding.GetEncoding("Shift_JIS").GetBytes(stTarget) If btBytes.Length >= 10 Then MidBStr = Encoding.GetEncoding("Shift_JIS").GetString(btBytes, 0, 10) TextBox1.Text = MidBStr End If End Sub End Class |
2 | テキストボックスから別の項目へフォーカスが移動した時に以下処理を行う。 |
8 | テキストボックスに入力された値を取得し、変数「stTarget 」に格納。 |
9 | 変数「stTarget 」の値をShift_JIS変換し、バイト型配列の変数「btBytes 」に格納。 |
11 | テキストボックスに入力されたバイト数が10バイト以上の場合、以下処理を行う。 |
13 | テキストボックスに入力された文字列から10バイト分の文字列を抜き出し、変数「MidBStr」に格納。 |
14 | 「13」行目で抜き出した10バイト分の文字列を、テキストボックス1に設定する。 |
関連記事
最後まで読んでいただき、ありがとうございました!
本のまとめ関連記事はこちら