|
分類:[VB.NET/VB2005 以降]
VB2008を使用しています。
あるWindowsフォーム上でCtrl+指定キーを押すと 指定した処理が行われるようにしたいと思っています。 (もしかしたらAlt+指定キーにするかも知れません。)
ただし、このフォーム上のコントロールにフォーカスがあるためか、 FormのKeyDownまたはPreviewKeyDownイベントの補足ができません。
このフォームには、以下のコントロールが配置されています。 Form上…タブコントロールとボタン2つ タブコントロール上…タブページが4つ 各タブページ上…DataGridViewが1つとボタンが3つ
例えば、任意のDataGridView上にフォーカスがある場合、 このDataGridViewのPreviewKeyDownイベントでキー押下を補足することができましたが、 実際にはどこにフォーカスがあるか分からないので、 このフォーム上のすべてのコントロールに対して PreviewKeyDownイベントハンドラを設定する必要があるのでしょうか?
もしその必要がある場合、AddHandlerで動的にハンドラを設定することが、 今後のメンテナンスを考えた場合においても楽だと思いますが、 フォーム上のすべてのコントロールのリストを取得するにはどうすればいいのでしょうか? (Form1.Controlsコレクションは、タブコントロールやPanelのような コンテナ上のコントロールは含まれないのですよね?)
|