DOBON.NET DOBON.NETプログラミング掲示板過去ログ

KeyDownイベントが動いたり動かなかったりします…

環境/言語:[OS : Windows XP / 言語 : C# / .NET Framework : 3.5]
分類:[.NET]

【解決したい問題】

いつも参考にさせて頂いております。
早速ですが、VS2008、フォームアプリケーションにて
フォームに[F1処理1」「F2処理2」・・・「F10処理10」と言うようにボタンを配置し、
フォームにKeyDownイベントを作成し、
ファンクションキーを押下時、
ボタンのClickイベントを呼び出して、
マウスでもキーボードでも同様の操作が出来るようにしたいのですが、
F10押下時のみ処理10が動いたり動かなかったりと言うような現象が起きております。

【解決するために何をしたか】

KeyDownイベント内にDebug.WriteLineを記述し、
デバッグ出力して見たところ、
押下回数  
1回目 ・・・・・ 出力有
2回目 ・・・・・ 出力無
3回目 ・・・・・ 出力有
4回目 ・・・・・ 出力無
となり、偶数回数でKeyDownイベントが走っていない事までわかったのですが、
原因、解決方法がわからず行き詰っております。

駄文で申し訳ありませんが、
解決方法等知っている方おりましたらご教授頂けるとありがたいです。
■No28174に返信(世氏駄さんの記事)
> F10押下時のみ処理10が動いたり動かなかったりと言うような現象が起きております。

F10 は特殊なキーです。
また F4 などもドロップダウン系のコントロールがある場合、
ダイアログを閉じるタイミングで動作が不安定になります。

とりあえず、PreviewKeyDown イベントを使うか、F10 に Close 系の実行があるなら Handled を true にしましょう。

# もし現状 Form でキーの処理をしているなら PreviewKeyDown はダメかもしれません。
■No28175に返信(じゃんぬねっとさんの記事)
> ■No28174に返信(世氏駄さんの記事)
>>F10押下時のみ処理10が動いたり動かなかったりと言うような現象が起きております。

ご多忙中のご回答ありがとうございます。

KeyDownイベント内
if(e.keyCode == keys.F10)
{
  // 処理10
  e.Handled = true;
}

で安定した動作するようになりました。
勉強になりました。
解決チェック忘れましたので再度書き込みします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板