入力文字の制限


だい  2003-10-09 13:01:04  No: 79723  IP: [192.*.*.*]

テキストボックスに入力できる文字を制限したいのですが
可能でしょうか?希望としては半角数字のみで7桁です。

編集 削除
イトウ  2003-10-09 13:14:04  No: 79724  IP: [192.*.*.*]

マルチポスットぽいですが…

とりあえず、テキストボックスのプロパティのすべての動作を覚えましょう。
MaxLengthなんか特に。

編集 削除
吉野  2003-10-14 12:33:16  No: 79725  IP: [192.*.*.*]

こんな感じでしょうか?
このコードですと、キー入力時のみチェックが入るので、貼り付け以外は対処できます。
貼り付けされると入力禁止文字も入ってしまうので、何らかの工夫が必要です。

<コード>
Private Sub Text1_KeyPress(KeyAscii As Integer)
    '数値若しくは[BackSpace]以外又は、7桁以上は入力不可
    If Not IsNumeric(Chr$(KeyAscii)) And KeyAscii <> vbKeyBack Or _
       (Len(Text1.Text) >= 7 And KeyAscii <> vbKeyBack) Then
        KeyAscii = 0
    Else
        '全角を半角に変換する
        KeyAscii = Asc(StrConv(Chr$(KeyAscii), vbNarrow))
    End If
End Sub

編集 削除
だい  2003-10-15 14:36:42  No: 79726  IP: [192.*.*.*]

VB.NETではエラーが出てしまい、だめでした。
ほかに方法はないのでしょうか?

編集 削除
dai  URL  2003-10-16 09:21:40  No: 79727  IP: [192.*.*.*]

http://dobon.net/vb/dotnet/control/numerictextbox.html

編集 削除
あんだう  2003-10-16 19:48:15  No: 79728  IP: [192.*.*.*]

SendMessage()APIを使用し、テキストボックスにバイト数制限をかけたらたらどうでしょう?

【定義】
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long   
Private Const EM_LIMITTEXT = &HC5

【使用例】
'text1テキストボックスを 4バイトに制限
    SendMessage text1.hwnd, EM_LIMITTEXT, 4, 0

編集 削除
ビギナー  2003-10-22 10:59:08  No: 79729  IP: [192.*.*.*]

吉野さんのやり方では全角数字を半角数字に変換していますよね?
同様の方法でVB.NETで全角かなを半角カナに変換することもできるのでしょうか?
よろしければ教えてください。

編集 削除
dai  2003-10-22 14:38:55  No: 79730  IP: [192.*.*.*]

http://www11.plala.or.jp/nslhp/tips/tips3.html

編集 削除