none
ファンクションキー F10が一回おきにしか機能しません RRS feed

回答

  • F10 はメニューバーをアクティブにする、Windows 標準のショートカットキーです。
    なので、F10 を押した後にカーソルの下矢印キーを押されると、左上隅のメニューが表示されると思います。
    メニューがアクティブな場合には、フォーム側でのキーイベントは発生しません。

    そこで、このショートカットの動作をさせないように、以下のようにしてみてください。

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.F10)
        {
            // 何かの処理

            // 既定の処理は実行しない
            e.Handled = true;
        }
    }

    • 回答としてマーク クサキ 2010年12月14日 9:44
    2010年12月14日 8:55

すべての返信

  • さすがにこれだけの情報ではわかりません。VS2008自体でしょうか?それともプログラムでKeyPressイベントなどで処理する際のことでしょうか?
    いずれにしてももう少し情報をいただけますか。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2010年12月14日 5:10
    モデレータ
  • Windows標準では、F10キーを押した際にどのような動作をするかご存知でしょうか?

    それがわかればなぜ1回おきなのかわかるかと。

    で、対処方法については、trapmiyaさんも書かれていますが、どんな環境なのかわからないので何のアドバイスもできません。

    2010年12月14日 5:22
  • Windows 7, VS2008 です。
    フォームのKeyDownイベントハンドラーの中に
    F10キーの時のみ2回に1回しか入って行きません。

    残念ながら、F10を使って、Windowsを操作したことがありません。

     

    2010年12月14日 7:39
  • F10 はメニューバーをアクティブにする、Windows 標準のショートカットキーです。
    なので、F10 を押した後にカーソルの下矢印キーを押されると、左上隅のメニューが表示されると思います。
    メニューがアクティブな場合には、フォーム側でのキーイベントは発生しません。

    そこで、このショートカットの動作をさせないように、以下のようにしてみてください。

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.F10)
        {
            // 何かの処理

            // 既定の処理は実行しない
            e.Handled = true;
        }
    }

    • 回答としてマーク クサキ 2010年12月14日 9:44
    2010年12月14日 8:55
  • 上手く行きました。
    どうもありがとうございました。

     

    2010年12月14日 9:44