如何防止用關閉窗口輸入鍵可編輯控件中的焦點?如何防止用「Enter」鍵關閉窗口而WPF中的可編輯控件中的焦點
通常,我使用IsCancel=True
進行取消,並使用IsDefault=True
確定取消。這是因爲它將允許用戶關閉對話框輸入爲OK並且Esc爲取消。
但是,問題是按輸入鍵關閉對話框,即使鍵盤焦點在可編輯控件中,如TextBox
。 最佳行爲是按輸入只有當鍵盤焦點不在可編輯控件中時,纔會關閉對話框。但是,按輸入鍵兩次應關閉對話框。否則,用戶需要將鍵盤焦點更改爲另一個不可編輯的控件,以關閉輸入鍵。
所以,作爲一種解決方法,我以這種方式實現:
- 攔截
KeyDown
事件,並檢查 如果是輸入鍵。 - 如果是這樣,請檢查鍵盤焦點是否在Ok按鈕處爲 。
- 如果是這樣,用Ok 按鈕關閉對話框。否則,將 鍵盤焦點更改爲確定按鈕。所以,點擊輸入鍵兩次將關閉對話框。
這有一個問題,因爲第一輸入將焦點切換到OK按鈕,所以如果焦點不在OK按鈕,用戶需要點擊輸入兩次。這與理想的行爲有點不同。另外,我需要在每個對話框中實現這個邏輯。
有人有一個好主意來解決這個問題嗎?