- PR -

Enter,Tab,十字キーのKeyDownイベントについて

1
投稿者投稿内容
タオル
常連さん
会議室デビュー日: 2005/04/27
投稿数: 43
投稿日時: 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/27
投稿数: 43
投稿日時: 2005-04-30 02:17
度々すみません。
http://www.atmarkit.co.jp/fdotnet/dotnettips/241windlgkey/windlgkey.html
ここを今発見しました。
これから読んでみますのでこれで解決できると思います。
疑問そのままのページを見落とすとは。。
ご迷惑おかけしました。
タオル
常連さん
会議室デビュー日: 2005/04/27
投稿数: 43
投稿日時: 2005-04-30 02:48
続けてすみません。

先ほどのリンク先より全てのキーイベントを取得する事が
できるようになりました。
お騒がせしました。

ですが、、また新たに質問させていただきたいのですが、
147
258
369
というようにボタンがある時
1から4にフォーカスを移動したい場合、
setfocus(VB6でありました)のようなメソッドで
直接どこにフォーカス移動するか指定するしかないのでしょうか?
例えば
キーダウンイベント内に今自分が居る場所(フォーカスがあたっている)
を記憶しておく変数を用意してif文を書くのが通常の方法なのでしょうか。
(現在8に居るから「→」押された場合はフォーカス移動無し。のような。)
ちょっと眠くて思考が止まりかけているようです。
明日朝起きてからもう一度取り組んでみますが
もし当たり前のように使う方法や、上記の処理では
だめすぎる等ありましたら何卒よろしくお願いいたします。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-04-30 07:03
Control派生クラスにはSelectNextControlメソッドがあります。
あとはTabIndexをきっちり設定すれば問題ないでしょう。
1

スキルアップ/キャリアアップ(JOB@IT)