テキストボックスに入力できる文字を制限したいのですが
可能でしょうか?希望としては半角数字のみで7桁です。
マルチポスットぽいですが…
とりあえず、テキストボックスのプロパティのすべての動作を覚えましょう。
MaxLengthなんか特に。
こんな感じでしょうか?
このコードですと、キー入力時のみチェックが入るので、貼り付け以外は対処できます。
貼り付けされると入力禁止文字も入ってしまうので、何らかの工夫が必要です。
<コード>
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
VB.NETではエラーが出てしまい、だめでした。
ほかに方法はないのでしょうか?
http://dobon.net/vb/dotnet/control/numerictextbox.html
編集 削除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
吉野さんのやり方では全角数字を半角数字に変換していますよね?
同様の方法でVB.NETで全角かなを半角カナに変換することもできるのでしょうか?
よろしければ教えてください。
http://www11.plala.or.jp/nslhp/tips/tips3.html
編集 削除