2017-08-07 1 views
0

私はwinformアプリケーションを持っています。アプリケーションでは、私は複数のボタンを持つパネルを持っています。パネル化された形式の中央の場所でキー入力信号を聞くことができますか?

ボタンがフォーカスを持たないとき、私はキー入力されたイベントをフォーム自体でキャプチャできます。しかし、ボタンにフォーカスを当てると(たとえボタンがイベントを無意識にキャッチしなくても)、彼らはフォームだけでなく、押されたイベントを取得します。

今私の質問です:(そのイベントに中央の方法をそれぞれのkeypressedイベントとすべてのボタンを作成することなく、およびコール)keypressed行動を集中管理する方法はありますか?本質的には

+0

差を分割する:1つのハンドラを作成し、各ボタンのイベントに追加します。 1つのコードはすべてによって呼び出されます。 – DonBoitnott

+0

@DonBoitnott私はその方法を知っています。それは、すべてのボタンにkeypressedイベントを使用する必要があることを意味します。だから私は、それを避けることが可能かどうか疑問に思った – Thomas

答えて

0

は唯一の1の方法は、適切なパラメータで定義する必要があります 例:

private void Event_Key_Press_Check(object sender, KeyPressEventArgs e) 
この方法は、その後にのみ、イベントで使用されるメソッドの名前として入れることがニーズ

(フォームデザイナを)、またはイベントとして追加されます。

こうして1つの方法しか使用されません。

したがって、(常に起動される1つのセントラルイベントの代わりに)単一のボタンごとに短い方法とイベントニーズが定義されます。

0

フォームのプロパティをKeyPreviewからtrueに設定し、KeyPressハンドラを設定します。フォームはボタンの前にこのイベントを処理します。

KeyPreview MSDN documentationを参照してください。

0

私は同じ問題を持っていた、そしてここ:)

チェック解決するためにはかなり簡単だった:KeyPress at form level with controls

ちょうどTrueに(フォームの)KeyPreviewプロパティを設定します。この方法では、フォームに他のコントロールの前にKeyPressイベントが処理されます。そのうちの1つにフォーカスがあっても

関連する問題