テキストボックス入力時に「エンター」を押すとビープ音が発生しますが、これはKeyPressイベントの引数に0を入れるとならなくなります。
が、MaxLength分文字を入力してしまうと、ビープ音が鳴ってしまいます。これをどうにか鳴らないように回避できないでしょうか?
パソコンの音がまったく鳴らなくなってもかまいません。
よろしくお願いします。
MaxLengthを設定せず、Changeで文字数管理するとか、
メッセージをフックして殺すとか、
Win2000なら、システムで警告音の設定をなしにするとか、
スピーカを物理的に切り離すとか、
自分の耳をふさぐとか・・・(^_^;
すみません。良く分からない箇所が一つ。
『メッセージをフックして殺す』って実際にはどのようにするのでしょうか?
高度ですねぇ、
ようするに、入力文字数がもう限界というときには、
VBの裏で、Windowsとのメッセージのやり取りがあるんです。
それを特殊な方法でのぞいて、
見つけたら、そのメッセージはなかったことにして、入力したということすら隠す。
…とそういうことですよね?
"殺す"って言うと、なんか…。まあ、他にないかなぁ…。
もっと大きなおとで覆い隠すという方法もありますね^^;
(解決になってない…)
いろいろなご意見ありがとうございます。
どうやら大変難しい事をしないとできないということがわかりました。
あきらめる他なさそうですねぇ。。。
とてつもなく簡単なんですが…。
Maxlengthを設定しなければいいんだから
Text1_Changeイベントで
If Len(Text1.Text) > 10 Then
Text1.Text = Left(Text1.Text,10)
Text1.SelStart = 10
End If
とかすればいいんじゃない?
>それを特殊な方法でのぞいて
今回は多分システムフックする必要があるでしょう。
この方法はVBネタとしては初級を超えているかと…。
今回はとりあえず妥協して、音が鳴るのは、し〜らんぷ〜り〜。。。
ちくちくやれば音のなくすこともできますよ。
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim MaxLen As Long
MaxLen = 10
If Len(Text1.Text) = MaxLen And KeyAscii <> 8 Then KeyAscii = 0
End Sub
Sayさんのコードと一緒にして下さい。
ここではデリートとバックスペースの機能が保持されます。
上書きには対応していないのでご注意下さい。
ツイート | ![]() |