- - PR -
Enter,Tab,十字キーのKeyDownイベントについて
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2005-04-30 01:51
お世話になっております。
お忙しい中恐縮ですが質問させてください。 現在C#でコマンドボタン間のフォーカス移動を 十字キーで実現したいと考えております。 以下のように九つのコマンドボタンを配置しているのですが ボタン1にフォーカスがある時「→」キーを押下して ボタン4にフォーカスを移動したいのです。 147 258 369 http://www.atmarkit.co.jp/fdotnet/dotnettips/231winentermove/winentermove.html 上記のアドレスにある方法、 つまり private void Form1_KeyDown(object sender, KeyEventArgs e) { switch(e.KeyCode) { case Keys.Right MessageBox.Show("→"); break; } } このようなソースで(まだ具体的な遷移方法についてはたどり着いていません) 「→」キーが押された時のイベントをとりたいのですが、 実現できません。 現在の状況を調査した結果「Enter」「Tab」「十字キー」だけが反応しません。 http://www.atmarkit.co.jp/fdotnet/dotnettips/229parentkeyproc/parentkeyproc.html ここのソースをコンパイルして実行すると確かに全てのキーイベントが発生しているので、 何が問題なのかわからなくなってしまいました。 夜分遅く大変お手数ですが 上記内容よろしくお願いいたします。 |
|
投稿日時: 2005-04-30 02:17
度々すみません。
http://www.atmarkit.co.jp/fdotnet/dotnettips/241windlgkey/windlgkey.html ここを今発見しました。 これから読んでみますのでこれで解決できると思います。 疑問そのままのページを見落とすとは。。 ご迷惑おかけしました。 |
|
投稿日時: 2005-04-30 02:48
続けてすみません。
先ほどのリンク先より全てのキーイベントを取得する事が できるようになりました。 お騒がせしました。 ですが、、また新たに質問させていただきたいのですが、 147 258 369 というようにボタンがある時 1から4にフォーカスを移動したい場合、 setfocus(VB6でありました)のようなメソッドで 直接どこにフォーカス移動するか指定するしかないのでしょうか? 例えば キーダウンイベント内に今自分が居る場所(フォーカスがあたっている) を記憶しておく変数を用意してif文を書くのが通常の方法なのでしょうか。 (現在8に居るから「→」押された場合はフォーカス移動無し。のような。) ちょっと眠くて思考が止まりかけているようです。 明日朝起きてからもう一度取り組んでみますが もし当たり前のように使う方法や、上記の処理では だめすぎる等ありましたら何卒よろしくお願いいたします。 |
|
投稿日時: 2005-04-30 07:03
Control派生クラスにはSelectNextControlメソッドがあります。
あとはTabIndexをきっちり設定すれば問題ないでしょう。 |
1
