読者です 読者をやめる 読者になる 読者になる

高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

MDIでのKeyDown?

プログラミング

 C#でMDIフォームを作成しているのですが、この場合KeyDownイベントはどこで発生するのでしょうか?
試してみると、(以下すべて、フォームのKeyPreviewがTrueの時)MDI子フォームでは、KeyDownイベントは発生しません。そして、KeyUpイベントは発生します
当然MDIフォームがKeyUpイベントを発生させるのは、MDIフォームがフォーカスを持っているときのみ。今回のソフトではMDIフォームにはPictureBoxしかありませんので、Tabキーを押しただけでフォームからフォーカスが失われ、メインフォームにフォーカスが行きます。すると、当然それらイベントは発生しなくなります。すると、メインフォームのKeyDown, KeyUpイベントが発生するようになります。
ここで、メインフォームのKeyUpイベントだけは特殊です。メインフォームのKeyUpだけは、MDI子フォームにいる状態でも発生します。となると、メインフォームでも子フォームでも同じキーを処理したいときは、メインフォームのKeyUpを処理すればいいということになるのでしょうか?