一千萬個為什麽

搜索

如何在WPF窗口中處理“Esc”鍵?

I want the Escape key to close my wpf window. However if there is a control that can consume that Escape key, I don't want to close the Window. There are multiple solutions on how to close the wpf Window when ESC key is pressed. eg. How does the wpf Button.IsCancel property work?

但是,此解決方案會關閉Window,而不考慮是否存在可以使用Escape鍵的活動控件。

例如。我有一個帶有DataGrid的Window。 dataGrid上的一列是組合框。如果我正在更改ComboBox,並點擊Escape,那麽控件應該來自編輯comboBox(正常行為)。如果我現在再次擊中Escape,那麽Window應該關閉。我想要一個通用的解決方案,而不是編寫大量的自定義代碼。

如果你能用C#提供解決方案,那就太棒了。

最佳答案

您應該只使用 KeyDown 事件而不是 PreviewKeyDown 事件。如果 Window 的任何子句處理該事件,它將不會被冒泡到窗口( Window 向下的 PreviewKeyDown 隧道),因此不會調用您的事件處理程序。

轉載註明原文: 如何在WPF窗口中處理“Esc”鍵?