Share via


指定された書式に合致するデータのみを受け付ける方法

Cc440881.download(ja-jp,MSDN.10).gif サンプル コードのダウンロード (vbmigtips_MaskedTextBox.msi, 488 KB)

※ このサンプルをインストールするには .NET Framework 2.0 Beta 2 が必要です。

テキストボックスに入力できるデータを制限したい場合、Visual Basic 6.0 では、キーイベントハンドラでキーデータを判別し、その後、出力を許可してきました。一方、Visual Basic 2005 では、TextBox コントロールに入力形式を制御する機能をサポートした MaskedTextBox コントロールが Windows コントロールに追加されました。そこで今回は、指定した書式に合致するデータのみを受け取る方法を紹介します。

たとえば、図1 の ID 欄のようにテキストボックスで数値のみを受け取るようにする場合、Visual Basic 6.0 では、キーを押されたときに発生する KeyPress イベントで、押されたキーに対応する文字が数値か否かを判断し、数値の場合はテキストボックスへの出力を許可します。

 Cc440881.MTB01(ja-jp,MSDN.10).jpg
 図1

実装コードは以下のとおりです。

Private Sub ID_Text_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyBack Then Exit Sub
If Not Chr(KeyAscii) Like "[0-9]" Then
KeyAscii = 0
End If
End Sub

リスト1

上記 (リスト1) の「If Not Chr(KeyAscii) Like "[0-9]" Then」で押されたキーを判別し、数値 (0 ~ 9) 以外の場合、「KeyAscii = 0」でテキストボックスへ出力を許可しません。上記を実装すると、図1 の ID 欄では数値のみが入力可能となり、数値以外の文字や記号は入力できなくなります。

このように、Visual Basic 6.0 ではイベントハンドラで出力の制限を行ってきました。一方、Visual Basic 2005 では、指定した書式に合致するデータのみを出力するテキストボックス、MaskedTextBox コントロールが新たに Windows コントロールに追加され、簡単に設定することができるようになりました。続いては、Visual Basic 2005 での設定方法を紹介します。

[ツールボックス]から MaskedTextBox コントロールを Form にドラッグ & ドロップします。追加したMaskedTextBox コントロールの Mask プロパティに「00000」と設定し、実行すると、図2 のように表示されます。図2 の ID 欄には5桁の数値のみ入力可能となります。

 Cc440881.MTB02(ja-jp,MSDN.10).jpg
 図2

今回は、Mask プロパティを 5 桁の数値「00000」と設定しましたが、このほかにも郵便番号や日時、電話番号などの入力欄などで使用することもできます。これらの設定は[定型入力]ダイアログ(Mask プロパティ欄の「...」ボタン、又は、スマートタグの「マスク設定...」の選択によって表示されます。)にて簡単に設定することができます(図3)。

 Cc440881.MTB03(ja-jp,MSDN.10).jpg
 図3

たとえば、郵便番号を入力する欄では、Mask プロパティを「000-0000」と設定([定型入力]ダイアログで「郵便番号」を選択)し、実行すると、図4 のように表示されます。

 Cc440881.MTB04(ja-jp,MSDN.10).jpg
 図4