テキストボックスで数値の入力のみを受け付けたい

解決


maki  2003-06-23 19:18:17  No: 107590

皆様、お世話さまです。
VB.Netのテキスト入力にて数値(".123456789")のみの入力を受け付けて、それ以外の文字("abc..."など)のキーが押されてもテキストボックスに表示させないようにできますでしょうか?
ご指導お願いします。


oku  URL  2003-06-23 20:43:59  No: 107591

VB.Netではないですが、ここに同じ事乗ってますよ。

数字と文字の区別
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200205/02050019.txt


nanashi  2003-06-23 21:26:03  No: 107592

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イベントでやった方が良いかも…/汗)


maki  2003-06-23 22:40:03  No: 107593

おかげ様で解決いたしました。
oku様・nanashi様ありがとうございました。


クリリン  2003-06-26 00:17:11  No: 107594

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加