- ベストアンサー
テキストボックスへの文字の入力について
テキストボックスに入力できる文字を半角文字は最大30字、全角文字は最大15字に設定したいのですがどのようにすればできるのでしょうか?知っている方教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
2つ方法を提案しておきますね。 こちらがVB的 1.KeyPressイベントで、すでにテキストに入力されている文字のバイト数と、イベントの引数で渡されてくる入力された文字のバイト数を足し、30より大きくなるのであれ ば、0を文字として返すことで入力できなくする。 バイト数を求めるにはStrConvを使ってください。 API使用 2.SendMessageで、テキストボックスにEM_LIMITTEXTメッセージを送る。 です。
その他の回答 (3)
- haporun
- ベストアンサー率40% (230/562)
VB5以上、WindowsNT以降では、半角と全角という概念が薄れています。 半角も内部で2バイトとして扱われるようになってしまったからです。 プロポーショナルフォントの登場で、半角文字が全角文字の半分の幅を持たなくなったのにも起因します。 これからは半角か全角かに依存するプログラムを作ることは、推奨されません。
お礼
回答どうもありがとうございました。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 全角と半角で分けるとなると、MaxLengthプロパティも使えなさそうです。 従って、テキストボックスのExitイベントか、LostFocusイベントに以下のように書くのはどうでしょう。 If LenB(StrConv(Text1.Text, vbFromUnicode)) > 30 Then Msgbox "文字数オーバー" With Text1 .SetFocus .SelStart = 0 .SelLength = Len(.Text) End With Exit Sub End If ちなみにこの場合は、半角文字を1文字=1、全角文字を1文字=2として文字数を数えて、全体で30を越えたらメッセージを出すようになっています。 では。
お礼
回答どうもありがとうございました。
- yanmaa
- ベストアンサー率45% (207/457)
テキストボックスのプロパティ「MaxLength」に30と設定する。
お礼
回答どうもありがとうございました。
補足
すいません。MaxLengthを使うと半角文字でも30字入ってしまうのでそれ以外の方法でありませんか。
お礼
回答どうもありがとうございました。