- ベストアンサー
テキストボックスについて
1. テキストボックスの MultiLine プロパティを False に設定すると,そのプログラムの実行中に,テキストボックス内でリターンキーが押されると,エラー音が発生します。これを抑止したいのですが,どうすればよいのでしょうか? なお,MultiLine プロパティを True にするとエラー音は発生しなくなりますが,そのかわりに改行が行われてしまいます。MultiLine プロパティを True にして改行を抑止する方法でも構いません。どうか教えていただきたく存じます。 2. テキストボックス入力中にタブキーが押されたことを認識させたいのですが,KeyDown で認識させようとしてもうまくいきません。単にフォーカスが動いてしまうだけになってしまいます。フォーカスを移動させずに,タブキーが押されたことを認識させる方法を教えてください。 以上2点,どうかよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
1.たぶんこれで音は出なくなると思います。 Private Sub Text1_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyReturn KeyAscii = 0 End Select End Sub 2.たぶん無理。。。 改行コードを表現できないテキストボックスでは、タブの文字コードも表現できないと思います。。。
その他の回答 (2)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
方法ありました。 全体的にBEEP音を出さないのであれば、#2のHk2001さんの発言通りです。 しかし、この方法はマルチラインプロパティをTRUEにしますので、やはり Private Sub Text1_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyReturn KeyAscii = 0 End Select End Sub を使用してください。 それと、フォーム中のコントロールで、TabStopプロパティの存在するコントロールを全てFalseに設定してください。 それによりTABコードも入力可能となります。 どういうことかというと、 ※MultiLine=Falseのとき 文字コードをそのまま表示します ※MultiLine=Trueのとき 文字コードを適した状態で表示します 要するに、Trueのときは改行コードやタブ文字コードを、改行文字/タブ文字として表現が可能になるようです。 しかし、改行コードは必要が無いのでKeyPressイベントで、改行コードが入力されようとしている時に、改行コードを無くしてしまう処理を行うようにします。
- Hk2001
- ベストアンサー率48% (24/49)
1.ですがNo1.さんの方法でいいと思いますが 私が使用しているのは、フォームのイベントを使用しています。 こうすると、その他のコントロールを使用した場合も Beep音が出ません。 好き不好きだとは思います。 プログラムだとこんな感じ↓ '//=================================================================================================== '// Beep音消去 '//=================================================================================================== Private Sub Form_KeyPress(KeyAscii As Integer) 'Enter & ESC キーが押されたときのBeep音を消す処理 If KeyAscii = vbKeyReturn Or KeyAscii = vbKeyEscape Then KeyAscii = 0 End If End Sub 2.ですがこれもNo.1さんのとうりコントロールのイベントでは、制御できません API関数か何かでわかるようなことをどこかで見かけたような気がします。 教えてGooの過去ログでけんさくされては?
お礼
ご回答ありがとうございます。2.の件につきまして,早速過去ログを検索してみました。その結果, http://www.kit.co.jp/vbit/QAndA01.htm#Tabキーを判別するには に解決方法が記載されてありました。ログも検索せずに質問をしてしまい,申し訳ございませんでした。 このたびは,大変ありがとうございました。
お礼
早速のご回答,大変ありがとうございます。TAGOSAKU7 さんには前回の質問のときもお世話になり,ありがとうございました。 さて1.の件は,TAGOSAKU7 さんのご回答の方法で解決いたしました。私が書いたプログラムの中では,すでに KeyPress でリターンキーの検出をしておりましたので,単に KeyAscii = 0 を追加するだけで解決いたしました。 このたびは,どうもありがとうございました。これからもよろしくお願いいたします。