keydown
単一のウィンドウではなく、ソリューション全体にイベント ハンドラー ( など) を設定するにはどうすればよいですか?
質問する
5019 次
5 に答える
12
次のように、アプリケーション クラス (App.cs) にグローバル イベント ハンドラーを登録します。
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
EventManager.RegisterClassHandler(typeof(Window), Window.KeyDownEvent, new RoutedEventHandler(Window_KeyDown));
}
void Window_KeyDown(object sender, RoutedEventArgs e)
{
// your code here
}
}
これにより、アプリ内KeyDown
のすべてのイベントが処理Window
されます。にキャストe
しKeyEventArgs
て、押されたキーに関する情報を取得できます。
于 2012-04-05T11:05:42.443 に答える
3
これはどう:
public partial class App : Application {
protected override void OnStartup(StartupEventArgs e) {
EventManager.RegisterClassHandler(typeof(Window), Window.KeyDownEvent, new RoutedEventHandler(KeyDown));
base.OnStartup(e);
}
void KeyDown(object sender, RoutedEventArgs e) {
}
}
于 2012-04-05T11:09:09.937 に答える
0
デリゲートを使用して、イベント (どこにいても) と、イベントがジャンプしたときに喜んで機能する関数を接続する必要があります。
デリゲートに必要な数のイベントをロードできます。
mzE。
于 2012-04-05T10:54:23.843 に答える
0
にフォーカスKeyDown
が必要なため、現在のウィンドウでのみ機能しますKeyDown
。できることは、すべてのウィンドウにハンドラーを追加し、それらのハンドラーで別のイベントをディスパッチしてから、必要なすべてのクラスをこの新しいイベントに登録することです。
または、Observer
パターンを見てください
于 2012-04-05T10:54:34.413 に答える
0
すべてのウィンドウでイベントを登録してグローバル関数/イベントに渡すか、(キーダウンなどの場合) グローバルな「イベントキャッチ」(キーボードのTHISなど) を使用します。
于 2012-04-05T10:54:44.980 に答える