• ベストアンサー

テキストボックスについて

1. テキストボックスの MultiLine プロパティを False に設定すると,そのプログラムの実行中に,テキストボックス内でリターンキーが押されると,エラー音が発生します。これを抑止したいのですが,どうすればよいのでしょうか? なお,MultiLine プロパティを True にするとエラー音は発生しなくなりますが,そのかわりに改行が行われてしまいます。MultiLine プロパティを True にして改行を抑止する方法でも構いません。どうか教えていただきたく存じます。 2. テキストボックス入力中にタブキーが押されたことを認識させたいのですが,KeyDown で認識させようとしてもうまくいきません。単にフォーカスが動いてしまうだけになってしまいます。フォーカスを移動させずに,タブキーが押されたことを認識させる方法を教えてください。 以上2点,どうかよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

1.たぶんこれで音は出なくなると思います。 Private Sub Text1_KeyPress(KeyAscii As Integer)   Select Case KeyAscii     Case vbKeyReturn       KeyAscii = 0   End Select End Sub 2.たぶん無理。。。 改行コードを表現できないテキストボックスでは、タブの文字コードも表現できないと思います。。。

38endoh
質問者

お礼

早速のご回答,大変ありがとうございます。TAGOSAKU7 さんには前回の質問のときもお世話になり,ありがとうございました。 さて1.の件は,TAGOSAKU7 さんのご回答の方法で解決いたしました。私が書いたプログラムの中では,すでに KeyPress でリターンキーの検出をしておりましたので,単に KeyAscii = 0 を追加するだけで解決いたしました。 このたびは,どうもありがとうございました。これからもよろしくお願いいたします。

その他の回答 (2)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

方法ありました。 全体的に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)
回答No.2

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の過去ログでけんさくされては?

38endoh
質問者

お礼

ご回答ありがとうございます。2.の件につきまして,早速過去ログを検索してみました。その結果, http://www.kit.co.jp/vbit/QAndA01.htm#Tabキーを判別するには に解決方法が記載されてありました。ログも検索せずに質問をしてしまい,申し訳ございませんでした。 このたびは,大変ありがとうございました。

関連するQ&A

  • 【VB.NET】テキストボックスでENTERを押したときに出る警告音を止めたい。

    Multilineを許可していない状態のテキストボックスでENTERを押すと改行出来ないから警告音がでるのは分かるのですが、KeyUpやKeyDownイベントをENTERキーで発生させたい為どうしても警告音が出てほしくないのですが警告音を出さないようにする方法ってないでしょうか? よろしくお願いします。

  • テキストボックスに改行を含む値を表示する場合

    テキストファイルより1行ずつ値を改行「chr(13)」でつなげて取得し、それを テキストボックスに表示させたいのですが、そのまま値をテキストボックスの textプロパティに設定すると、改行が「・」で表示され改行されていません。 テキストボックスのプロパティでMultiLineもTrueにしてあるのですが、これは 無理なことなのでしょうか? 一行ずつ取得してテキストボックスに表示する際に改行を設定していくしかない のでしょうか? 詳しい方いらっしゃいましたらご教示ください。 よろしくお願いいたします。

  • テキストボックスのエンターキー無効

    VB6.0について質問いたします。 テキストボックスの入力の際に改行を強制的にできないように制御したいのですが次のプログラムでは上手くいきませんでした。 Private Sub Text_KeyDown(KeyCode As Integer, Shift As Integer) If vbcode = vbKeyReturn Then Exit Sub End If End Sub エンターキーを押したとき何も実行しないようにするにはどうしたらいいですか? テキストボックスはスクロールバーを設置してMultiLine プロパティをtrueに設定しています。

  • VBA テキストボックスの行数取得

    Excle2000を使用しています。 ユーザーフォームにテキストボックスを設置してあり、MultiLineとEnterKeyBehaviorをTrueにして改行できるようにしてあります。 そこでテキストボックスに文字を入力し、コマンドボタンなどをクリックするとメッセージボックスにそのテキストボックスの行数を表示させるにはどうしたら良いでしょうか?? よろしくお願いします。

  • テキストボックスからフォーカス外す

     editBox = CreateWindow(   "EDIT",   "あああ",   SS_CENTER | WS_CHILD | WS_VISIBLE,   0,0,100,20,   hWnd,   NULL,   hInstance,   NULL); テキストボックスのフォーカスを外すにはどうしたら いいんですか? ESCキーでフォーカスを外そうと思ったら、 テキストボックスにフォーカスがあるせいで case WM_KEYDOWN が動作しません。 フォーカスを外すというソース自体も分かっていません。  case WM_KEYDOWN:   if( wParam == VK_ESCAPE )    ?  break;

  • スクロールしないテキストボックス VB6です。

    原稿用紙の様に固定した行数、列数のテキストボックスを作りたいのですが、どうすれば良いのでしょうか。 MultiLine にすることまで分かるのですが、最下行で改行するとスクロールアップしてしまいます。 動かない様にするにはどうしたら良いでしょうか。

  • テキストボックスのフォーカス移動について

    探してみたのですがわからないので質問します。 初歩的な質問ですみません。タブキーでなくてエンターキーでテキストボックスのフォーカスをいどうさせる方法を教えてください。 テキスト1を入力後エンターキーを押すと次のテキストボックスにいどうさせる方法です。 エクセルのVBではなくVB6での質問です。

  • C#の改行について

    テキストボックスでmultilineをtrueにした場合 改行が¥nでは出来ずに Environment.NewLineを使わなければ改行できませんでした。 何故だか教えていただきたいです。

  • テキストボックスにフォーカスをあてる

    いつもお世話になっております。 actionscript3.0にて、テキストボックスにフォーカスを当てる プログラムを作りたいと思っております。 ソースは以下の通りです。 package {   public class hoge extends MovieClip {     public var ipt:TextInput;     public function hoge() {      Selection.setFocus(ipt);     }   } } Selection.setFocus(ipt); でテキストボックスにフォーカスが当たると調べたのですが ↓のエラーメッセージが表示されてしまいます。 「1120: 未定義のプロパティ Selection へのアクセスです。」 何かimportしなくてはいけないのでしょうか。 よろしくご教示お願い申し上げます。

    • ベストアンサー
    • Flash
  • タブキー押下時のイベントをひろいたい。

    テキストボックスにフォーカスがあり、TABキーが押された時のイベントをひろいたいのですが、KeyPressもKeyDownもイベントが発生しません。 (If KeyCode = vbKeyTab Then  MsgBox "タブキー" End If  If KeyAscii = vbKeyTab Then ~ のようなコードを記述してもメッセージが表示されない) ヘルプにはKeyDownでは発生しないという記述がありますが、KeyPressではイベントがひろえるようなことが書いてあるのにひろえないので困っています。 なにかよい方法はありませんでしょうか。 わかりにくい説明で申し訳ありませんが困ってます。 宜しくお願いします。

専門家に質問してみよう