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