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

解決


maki  2003-06-23 10:18:17  No: 107590  IP: [192.*.*.*]

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

編集 削除
oku  URL  2003-06-23 11:43:59  No: 107591  IP: [192.*.*.*]

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

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

編集 削除
nanashi  2003-06-23 12:26:03  No: 107592  IP: [192.*.*.*]

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 13:40:03  No: 107593  IP: [192.*.*.*]

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

編集 削除
クリリン  2003-06-25 15:17:11  No: 107594  IP: [192.*.*.*]

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

編集 削除