0

シナリオ:Mainform Outlookのメイン画面のように、アプリケーションの親フォームまたはホストフォームである Form()を作成しました。

Helpメニューバーアイテムの下にBarItem()を作成F1し、Shortcutプロパティを使用してショートカットキーを割り当てました。

ただし、フォーカスを取得する以外のフォームがある場合Mainform、ショートカットキーはに到達しませんMainform。どうすればこれを解決できますか?

から起動されるすべてのフォームのキープレスイベントをサブスクライブする余裕がありませんMainform

同様のシナリオ:たとえば、Microsoft Outlookの任意のウィンドウに移動してを押すF1と、開いているフォームに関係なくヘルプウィンドウが起動します。同様の動作が必要です。

4

3 に答える 3

1

私のコメントから述べたように、これを達成することができKeyUp Eventます。すべてのあなたにを使用するだけFormで、プロパティはKeyPreview = true

    private void Form1_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.F1)
        {
            //do stuff
        }
    }
于 2013-02-08T07:16:28.103 に答える
1

メインフォーム(必要に応じて親フォーム)で、プロパティKeyPreviewがtrueに設定されていることを確認します

于 2013-02-08T06:51:59.477 に答える
1

おそらくメッセージフィルターが役立つかもしれず、あなたのケースで使用するのに適切なアプローチです。これらを見てください:http: //msdn.microsoft.com/en-us/library/system.windows.forms.imessagefilter.aspx http://msdn.microsoft.com/en-us/library/system.windows .forms.application.addmessagefilter.aspx

上下の矢印キーのメッセージフィルターの例を次に示します https://stackoverflow.com/a/8257039/818321

于 2013-02-18T11:55:18.160 に答える