• ベストアンサー

MDI親フォームでキー入力を監視する。

MDIを使っていて、何らかの子フォームが常に開いている状態で、親フォーム側でキー入力を監視する事は可能でしょうか? 子フォーム側でキー入力を監視するのは避けたいので... どなたかお教えください。

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

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

WithEventsで出来るでしょう Private WithEvents f As Form Private Sub f_KeyPress(KeyAscii As Integer) MsgBox KeyAscii End Sub Private Sub MDIForm_Load() Set f = New Form1 f.Show f.KeyPreview = True End Sub

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MDI親フォームでのキー入力監視

    はじめまして。 VB6.0 SP5で開発を行っております。 子フォームが開いていない状態のMDI親フォームで、F1~F12のファンクションキーを押下したら、それぞれ対応した子フォームが開くようにしたいのですが、MDI親フォームでは、KeyUpやKeyDownのイベントが発生しないため、キー入力監視ができません。 上記のような事を実現させるためには、どのようにすればよろしいのでしょうか。 MDI親フォームには、PictureBoxを貼りその中にボタンを設置して、マウスクリックでも子フォームを開くようにしています。PictureBoxでKeyイベントを取得しようとしましたが、ボタンをクリックして、子フォームを開き、その子フォームを閉じた後(子フォームのUnLoadイベント内で親フォームのPictureBoxにSetFocusしています)、フォーカスがどこかへ行ってしまい、イベントがとれません。 常に、子フォームを開いている状態で、子フォームでKeyイベントを取得するしかないのでしょうか。その場合、子フォームを閉じた時に、別のフォーム(Keyイベント取得用フォーム)を自動的に開く方法はありますでしょうか。 長文となり申し訳ありません。 ご教授の程、よろしくお願い致します。 開発環境  OS:WindowsXP SP3  言語:VisualBasic6.0 SP5

  • MDI親フォームで子フォーム開放を知る

    はじめまして。VB.NET2005でプログラミングをしている初心者です。 MDIフォームのAPを作成しています。 MDI親フォーム1つと子フォームが2つあるとします。 親フォームから子フォーム2つをShowします。 子フォーム1を閉じたときに、親フォーム内で子フォーム1が閉じられた事を知るすべは無いのでしょうか。 親フォーム内で起こるイベントでどの子フォームが閉じられたかを得たいと思っています。 どなたか分かる方いらっしゃいましたらご教授ください。 宜しくお願い致します。

  • MDIの親フォームから子フォームの操作

    VB2010のMDIの親フォームからの操作に関してです。 MDIで設定された親フォームのMenuStripから子フォームのTextBox1のTextの値をMsgBoxで取得したいのです 出来る事なのかどうか分からないですが、初歩的な質問でご迷惑をお掛けします・・・

  • MDIフォームでのモーダル

    こんにちわ。 visualstudio2005(vb.net)で開発を行っています。 MDIフォームを使ってシステムを作成しています。 親フォームの中にフォーム1を表示させそのフォーム1からボタンを押すとフォーム2が表示されるという仕様です。 希望としてはフォーム2を起動中はフォーム1は利用不可にしたい(モーダルのような感じで表示させたい)のですが、MDIではShowDialogは無理なようです。 MDIフォームでこういったことを実現するのは無理なのでしょうか? (VisualStudioの[ツール]-[オプション]の画面を参考に見てもモーダルのフォームはMDIから外れたエリアで表示されている気がします。) 解決策や代替の手段等ありましたらおしえていただけませんでしょうか? お忙しいところ大変申し訳ありませんがよろしくお願いいたします。

  • MDI:親フォームと子フォームを別EXEで実装するには

    MDIでアプリケーションを作成したいと思っています。 その時に子フォームを親フォームとは別EXEで作りたいと思っています。 例えば 親フォームのボタンを押すと、子フォームEXEが起動し、親フォーム内に表示される。 このようなことは出来ますか? 出来るのでしたら、どうしたらよろしいでしょうか。 教えてください。

  • MDIフォームとユーザコントロール

    VB.Netでの質問です。 ウィンドウメッセージを受け取りイベントを起こすユーザーコントロールクラス Class UserCtl Private Event MyKeyDown() Private Sub UserCtl_KeyDown() as Handels MyBase.KeyDown RaiseEvent MyKeyDown End Sub End Class プロセスA MDI子フォームにユーザーコントロールを追加し、子フォームにて、UserCtl.MyKeyDownイベントプロシージャでユーザーコントロールがウィンドウメッセージを受け取ったと認識し処理をします。 MDI子フォームはMDI親フォームより、CloseメソッドでしかCloseしません。 プロセスB FindWindowでMDI親フォーム, FindWindowExでMDI子フォーム、ユーザーコントロールハンドルを確認した上で、ユーザーコントロールにウィンドウメッセージをPostMessageします。 質問1 プロセスBからハンドルを探していますが、ウィンドウハンドル,ユーザーコントロールハンドルはいつまで有効なハンドルなのでしょうか? Closeでしょうか、それとも、Disposeでしょうか? 質問2 MDI親フォームでMDI子フォームをCloseした後でも、UserCtl.MyKeyDownは発生できるものなのでしょうか? 質問3 ユーザーコントロールで親フォーム(MDI子フォーム)がCloseされた事を認識する方法はないでしょうか? Me.Parent.IsDisposeでできるかなぁと考えているのですが。 よろしくお願いいたします。

  • VB.NET MDI親フォームのスクロールバー制御

    開発環境:Windows XP、VB.NET 2005 MDI親フォームに複数のMDI子フォームを貼り付けるプログラムを作っています。 MDI子フォームを重ならないように配置させているのですが、MDI親フォームの表示領域を超えた場合に自動的にスクロールバーが現れます。 この時に、マウスのホイールの上下の動きにあわて、MDI親フォームのスクロールバーを制御して画面を上下させたいのですが方法が分かりません。 どなたかご享受ください。

  • VB.NET MDI 親子フォームのメニューをマージしたくない

    MDI アプリケーションを作成しています。 親フォーム、子フォームともにメニューを持っています。 子フォームを表示すると、親子のメニューがマージしてしまうのですが、子フォームのメニューは、子フォームに表示するようにできないのでしょうか? よろしくお願い致します。

  • VB6でMDIフォームを使用しています。

    VB6でMDIフォームを使用しています。 MDIフォームで下記プログラムを作成しました。 (1)ツールバー上のボタン1を押し、子フォームAを表示させました。   ※子フォームAの WindowState を「2-最大化」に事前設定し、ウィンドウは最大化して表示されました。 (2)子フォームAを表示した状態で、同じツールバー上にあるボタン2を押し、子フォームB(ダイアログ)を表示させました。   ※子フォームBの WindowState を「0-標準」、BorderStyleを「3-固定ダイアログ」に事前設定し、表示されました。(一般的なオプション画面みたいなもの) 問題点はその際、子フォームAのウィンドウが勝手に「最大化」から「標準」に変わってしまうことです。 これを回避する方法はないのでしょうか? 以上、宜しくお願いいたします。

  • VB2005のMDIについて

    はじめまして。現在、VB2005で開発しております。 MDIの操作で判らないところがありますので、ご存知の方がいましたら、教えてください。 MDIで開発しております。親フォームで発生したイベント内で子フォームに対してコントロール操作(画面を操作する関数を実行)を行うのですが、画面は全く動作しません。 ※デバックで確認するとコントロール操作しております。 対象の子フォームは必ず表示されていますが、必ずしも最前面にはいません。 今回のように親フォームから子フォームのメソッドを実行する際に動作する方法を教えてください。それとも、操作することは不可なのでしょうか。宜しくお願いします。