テキストボックスに入力できる文字を制限したいのですが
可能でしょうか?希望としては半角数字のみで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
ツイート | ![]() |