テキストボックスに数値を入力してそれを数値変数にセットするときに
普通に数字を入れると問題ないですが数値以外の文字を入れるとエラーがでます。
Dim i as Integer
i = CInt(Input.Text) AAAなどの文字だとエラー
そこでKeyDownイベントで入力制限をつけようと以下のようにしましたが
[-15---]のように入力するとやっぱりエラーになります
Private Sub Input_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) Handles Input.KeyDown
''0'-'9','-','.'以外をはじく
If (e.KeyCode >= Keys.NumPad0 And e.KeyCode <= Keys.NumPad9) _
Or (e.KeyCode >= Keys.D0 And e.KeyCode <= Keys.D9) _
Or e.KeyCode = Keys.Decimal Or e.KeyCode = Keys.Subtract _
Or e.KeyCode = Keys.Back Or e.KeyCode = Keys.OemPeriod _
Or e.KeyCode = Keys.OemMinus Then
Else
e.SuppressKeyPress = True
End If
End Sub
なにかいい方法はないでしょうか?
環境はVB.net2005です
よろしくお願いします。
こういうのは普通TextBoxで受け付ける/受け付けないを判定するのでなく、
何でも受け付ける状態にして、いざその値を使うというときに使える/使えない
を判定するのが一般的です。
で、判定には 2005 なら TryParse を使えばいいでしょう。
TextBoxで制御したいのであれば、
> Else
> e.SuppressKeyPress = True
> End If
のところで、入力されている値は数値として正しいかと判定する処理を入れればよさそ
う。
(但し、入力回数分そのIF文を通ることになる)
TryParseで処理することにしました
ありがとうございます