皆様、お世話さまです。
VB.Netのテキスト入力にて数値(".123456789")のみの入力を受け付けて、それ以外の文字("abc..."など)のキーが押されてもテキストボックスに表示させないようにできますでしょうか?
ご指導お願いします。
VB.Netではないですが、ここに同じ事乗ってますよ。
数字と文字の区別
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200205/02050019.txt
SetWindowLong、GetWindowLongのAPIを使えば出来ます。
下記のサンプルソースを参考にして下さい。
VB6のものですが、API宣言をVB.NET用に変更すれば使えます。
http://vbvbvb.com/jp/gtips/0701/gSetWindowLongEsNumber.html
あと、これだけでは"."が入力出来ないのでKeyPressイベントで
If e.KeyChar = "?" Then
sender.SelectedText = e.KeyChar
End If
のようにする必要があります。
入力そのものは上記の方法でmakiさんの要望は満たせると思いますが
コピペされることもあると思うのでChangeイベントでチェックする必要があると思います。
(てゆーか、それなら最初から全部Changeイベントでやった方が良いかも…/汗)
おかげ様で解決いたしました。
oku様・nanashi様ありがとうございました。
VB.NET版の簡単な方法
Private Sub TextBox1_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Not (e.KeyChar >= "0"c And e.KeyChar <= "9"c Or e.KeyChar = "."c) Then
e.Handled = True
End If
End Sub
ツイート | ![]() |