2010-12-14 9 views
2

私はこれがあなたには簡単な答えかもしれないが、これを正しく行う方法はわかりません。 Iveは、テキストエディタを作成しました。このエディタには、関数を表示するドッキングウィンドウもあります。私は、F8が機能ウィンドウを表示するためのショートカットキーであることをメニューに設定しました。 、キー押下を無効にする

+0

私はfキーを押しても何も起こりませんが、普通のキーを押すと停止します。 – mookie

+0

私の答えの編集を参照してください – msarchet

答えて

3

お使いのテキストエディタKeyPressedイベントをキャプチャし、で来ているKeyEventArgsをチェックし、そのイベントが親コントロールに渡されることになりますどの偽として扱われないマーク:

KeyPressed(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.F8) DoSomething(); 
    e.Handled = false; 
} 

質問に追加したコメントに応じて。 KeyPreviewコントロールをTrueに設定する必要があります。私はKeyPreviewがフォームレベルでのみ利用可能かもしれないと思うが、私はよくわからない。

+0

私はあなたがそれを後方に持っていると思います。 'e.Handled'プロパティをtrueに設定すると、コントロールツリーの上にイベントが伝播するのを防ぎます。一方、 'e.Handled'をfalseに設定すると、他のコントロールがそれをキャプチャできます。 –

+0

@Mike Webbオハイオ州の私のexplinationで、誤植 – msarchet

+0

ああ、待ってください。申し訳ありませんが、私はあなたが反対を言っていると思った。混乱する。あなたの答えをもう一度言いたいことがあります。 –

1

OnKeyPress(またはOnKeyDownまたはOnKeyUp)イベントのイベントハンドラを設定します。私は、プログラム内の関数の現在のデータを解析するためにF8キー押下イベントをキャッチしたいと思いますが、私はこれが起こることを得るカントどのキーが押されたかをチェックします(イベント引数に入ります)。それで、あなたは何でもできます。

0

私はすべてを理解することはできませんが、どのコントロールでもKeyPress Eventを使用することはできませんか?

1

タグ付けされた回答が正しいとは思わない。 KeyPressイベントハンドラはファンクションキーを処理しません。 KeyUpイベントハンドラまたはProcessDialogKeyメソッドを使用する必要があります。

関連する問題