如何將事件處理程序(例如)設置爲整個解決方案而不是單個窗口?如何將WPF中的evenHandler設置爲所有窗口(整個應用程序)?
3
A
回答
9
在你的應用程序類(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
以獲取有關按下按鍵的信息。
0
您應該使用委託來連接事件(無論它在哪裏)和事件跳轉時您願意工作的函數。
您可以根據需要爲您的代理裝入儘可能多的事件。
mzE。
+1
您能不能給一個代碼? – Programer 2012-04-05 10:58:12
0
那麼,KeyDown
只能在當前窗口中使用,因爲您需要關注KeyDown
。你可以做的是向所有窗口添加一個處理程序,並在這些處理程序中分派另一個事件,然後在這個新事件中註冊所需的所有類。
或者,看看在Observer
模式
+0
我曾經發生過......我不記得我是如何複製它的,我現在找不到的地方 – Programer 2012-04-05 10:57:29
0
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) {
}
}
相關問題
- 1. 如何將Win32窗口設置爲WPF窗口的所有者?
- 2. 如何設置Wpf窗口作爲Winforms窗體的所有者
- 3. 如何將樣式應用於WPF應用程序中的所有窗口?
- 4. 如何將圖標設置爲JavaFX應用程序的窗口?
- 5. 將FlowDirection設置爲RightToLeft對於應用程序中的所有窗口
- 6. 如何從WPF中的ViewModel設置窗口作爲所有者窗口
- 7. 如何在一個WPF應用程序中有多個窗口?
- 8. 如何爲Qt應用程序的整個窗口設置背景顏色?
- 9. WPF如何設計一個多窗口應用程序?
- 10. WPF打開設置窗口從窗體應用程序
- 11. 如何將窗戶所有者設置爲非管理窗口
- 12. wpf在一個窗口中顯示所有窗體的應用程序
- 13. WPF MVVM在父窗口頂部打開新窗口,並將父窗口設置爲子窗口的所有者
- 14. 通過其他應用程序的窗口設置wpf窗口的所有者,可以嗎?
- 15. 多個窗口,多個線程。設置窗口所有者
- 16. 在C#/ WPF中爲2個進程設置父窗體/窗口
- 17. 所有應用程序窗口的WPF圖標
- 18. 如何設置WPF窗口的位置?
- 19. 如何爲應用程序中的所有文本設置fontFamily?
- 20. C#在Windows WPF應用程序中,如何設置窗口標題代碼
- 21. WPF應用程序頁面外部窗口設置屬性
- 22. 如何在通用應用程序中設置窗口大小?
- 23. 將一個WPF窗口調整爲CView的子窗口
- 24. 以編程方式調整WPF應用程序的主窗口
- 25. 如何在整個應用程序中爲QPlainTextEdit設置字體
- 26. 如何在Android中爲整個應用程序設置背景?
- 27. 如何使一塊WPF內容佔用整個應用程序窗口
- 28. 如何將WPF窗口添加到WinForms應用程序
- 29. WPF + PRISM如何將彈出窗口的所有者作爲主窗口
- 30. 如何設置WPF窗體作爲Windows窗體應用程序mainform在c#
謝謝方向,我看到這一次,它有一些與註冊處理程序和東西。生病嘗試這一點,並報告 – Programer 2012-04-05 11:06:39
實際上,而不是鑄造,你可以用'新的KeyEventHandler(Window_KeyDown)'替換'new RoutedEventHandler(..)'' – BatteryBackupUnit 2015-07-21 13:51:10