• ベストアンサー

keydown イベントについて

VB6なのですが、あるオブジェクトにフォーカスがある時には キーダウンが出来るのですが、どこにもフォーカスがないときには、、 (強いて言うならフォームにフォーカス?)キーダウンイベントは 発生しないのでしょうか? 要は、カーソル、フォーカス、の位置に関係なく、「F1」を押したときに ある動作をさせたいのです。 よろしくお願いします

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

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

FormのKeyPreviewプロパティ=Trueにして Form_Keydown イベントに記述しましょう。 if KeyCode = vbKeyF1 Then   MsgBox "(゜ .゜)ノ" End If

sakadachi
質問者

お礼

KeyPreviewがポイントでしたか。。 あっさり解決です(笑) どうもありがとうございました m(__)m

関連するQ&A

  • keydownイベントについて

    VB6.0について質問です。 現在フォームが大きいのでピクチャーにスクロールバーをつけて対応しています。 フォームでキーボードの矢印ボタンを押すことでも上下の移動を可能にしたいのですがうまくいきません。 フォーカスがチェックボックスやオプションボタンにあるとキーダウンがきいてくれません。。。 キーダウンイベントでどのような処理を行えば実現できますか?

  • VBでカードリーダ(USB)のイベント

    VBでカードリーダ(USB)のデータを読み込み、プログラミングしたいのですが、 カードリーダがUSBのため、カードを読み込ますとフォーカスのあるところに、データを勝手に表示してしまいます。 VBにてイベントは取れないのでしょうか? 多分キーボードなどのキーダウンと同じイベントが発生しているとは思うのですが、区別したいのです。 よろしくお願いします。

  • UserControl内の複数のTextBoxでKeyDownイベントが使えない

    VB2005の初心者です。 色々調べたつもりなのですが解らなくてよろしくお願いします。 フォームのTab移動を[Enter]きーで移動するようにしているのですが UserControlに複数のTextBoxを配置しUserControlを作成したものを、フォームに配置するとKeyDownイベントが取得できないというか、フォームに配置したTextBoxなどにフォーカスが移動してしまいます。 UserControl内のTextBoxのTabIndex順に移動させる方法などご存知の方いらっしゃいましたらご教授願えないでしょうか。 ProcessDialogKeyのオーバーライト辺りまでは調べたのですがよく解らなくてお願いします。

  • keydownイベントを発生で他のフォームで受信

    VB初心者です。 よろしくお願いします。 バーコードリーダーで読み込んでtextboxに表示させる仕組みを作りましたが、バーコードリーダーが ないのでバーコードリーダーを読み込んだように疑似的にできるようなことを考えています。 考えとしては バーコードを読み込んで表示させる:フォームA  ・keydownイベントを受っとる  ・textboxに読み込んだ値を表示 バーコードを読み込んだように疑似的に動作する:フォームB  ・keydownイベントを発生させる  ・フォームBに入力した値をフォームAに渡す フォームAは作成できましたが、フォームBのようなことはできるのでしょうか。 どのようなイベントを使用したらいいかなど、アドバイスをいただけないでしょうか。 環境:VB2008 OS:Windows7

  • C#でKeyDownイベントが発生しない。

    VS2010 CS.NET 環境です。 Formにボタンが2個あり。ボタン1はF1キー、ボタン2はF2キーで動作するようにしています。 private void Form1_KeyDown(object sender, KeyEventArgs e) {    switch (e.KeyCode)    { case Keys.F1: this.btn1.PerformClick(); break; case Keys.F2: this.btn2.PerformClick(); break; } } ボタン1は計算処理をします。 ボタン2は別のForm2を開きます。 ボタン1はF1キーで何度でも動作しますが、ボタン2はF2キーでForm2を開いて、それを閉じて元のForm1に戻ると次のF2キーではKeyDownイベントが発生しません。 この時はF1キーもKeyDownイベントが発生しなくなります。 Form1のどこかをクリックすると、KeyDownイベントが発生するようになります。 別Formを開いて戻ってもKeyDownイベントを発生させるにはどうしたらいいでしょうか? よろしくお願いします。

  • コマンドボタンのEnterイベント後に、フォーカスを移動したい。

    コマンドボタンのEnterイベント後に、フォーカスを移動したい。 フォームに「TextBox1」(TabIndex=0)「TextBox2」(TabIndex=1)「CommandButton1」(TabIndex=2)の3つのコントロールがある場合。 CommandButton1がクリックされた場合も、TextBox2からCommandButton1に、タブキーまたはエンターキーで、フォーカスが移った場合にも、同じ処理を行い、処理結果によってTextBox1やTextBox2にフォーカスを移したいと考えています。 以下のようなサンプルを作成しました。 Private Sub CommandButton1_Enter() CommandButton1_Click End Sub Private Sub CommandButton1_Click() MsgBox ("OK") TextBox2.SetFocus End Sub この場合、CommandButton1_Enterのイベントが起こった場合、CommandButton1_Click()のTextBox2.SetFocusは効きません。 (正確には、CommandButton1_Enterイベントが終わった時点で無効でしょうか。) Enterイベントは、フォーカスが移動する前に発生するため、このイベントが終わった後に、そもそもの動作に戻り、フォーカス移動が発生してしまうからなのだと思っております。 要は、コマンドボタンにタブキーやエンターキーでフォーカスしても、コマンドボタンをクリックしたのと同じ処理を行い、所定の位置にフォーカスを持っていきたいのですが、どのように行えば良いか、わからない状況です。 よろしくお願いいたします。

  • FlashのDragOverイベント

    Flashのイベントについての質問です。 FlashMXを使用しています。 クリックされた状態(マウスダウン状態)のまま、 ムービークリップオブジェクトにカーソルを、 もってきたときにイベントを発生させる時、 皆さんはどうやっていますか? MXからムービークリップでも、 DragOverハンドラが使えるようになりましたが、 DragOverは、一度そのオブジェクトで マウスダウンさせてないと発生していません。 すでにマウスダウンされている状態で、 カーソルがオブジェクト範囲内に入ったときに、 イベントを発生させたいのです。 とっても困っています。よろしくお願いいたします。

  • VBでクリックイベントを発生させたいです

    VBのことについての質問なんですが 座標を指定してマウスカーソルを自動でクリックさせたり、何秒間か長押しさせたりするイベントの発生のさせ方はどうするんですか? またデスクトップの座標ではなく、フォーム内での座標指定はできますか? 回答よろしくお願いいたします

  • サブフォームのTab移動について

    VB2005で開発を行っております。 とあるサイトでMDIとは別の方法でフォーム内にフォームを貼り付けることができることを知りました。 以下がその簡単なコードです。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim f As New Form2() f.TopLevel = False Me.Controls.Add(f) f.Show() f.BringToFront() End Sub End Class ここでそれぞれのフォームにTextBoxなどのコントロールを貼り付け、Tabキーによるフォーカス移動を行うと、Form1のコントロールからForm2のコントロールへの移動は行えるのですが、その後はForm2のコントロール内のみフォーカス移動が行われてしまいます。 できればForm2がGroupBoxやPanelコントロールのように動作してほしいのですが、どのようにすればよいでしょうか?

  • イベントハンドラを使わずに実行するには?

    googleのように、ページが読み込まれたらフォームにフォーカスを 移すということをやりたいのですが、onLoadのようなイベントを 使わずに行うことは出来ますでしょうか? 掲示板でこの機能を使いたいと思っています。しかし、全てのページに フォームがあるわけではないので、<body onLoad="~">で実現すると フォームがない時にエラーが発生してしまいます。 document.write( "hoehoe" ); が直書きで実行されるなら同じようにできるのでは? と思って <script> <!-- document.form.comment.focus(); // --> </script> とやってみましたができませんでした。 onLoadを使わない方法、もしくは<body>以外でonLoadを使う方法が ありましたら是非教えてください。

専門家に質問してみよう