1
我有一個帶有幾個輸入控件(組合框,文本框)的窗體。我想關閉轉義鍵上的表單,但只有當輸入控件沒有使用按鍵。讓我們說重點是開放(下降)組合框。按Esc鍵將關閉組合框的下拉部分 - 因此,我不想關閉該窗體。但是如果組合框未打開,按Esc將不會對組合框執行任何操作,所以我想關閉窗體。 我認爲重寫窗體的ProcessCmdKey將完成這項工作。我試過在窗體上檢測未消耗的命令鍵 - winforms
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, Keys keyData)
{
bool consumed = base.ProcessCmdKey(ref msg, keyData);
if (!consumed)
Close();
}
但是'消耗'總是錯誤的(在我的測試用例中),無論是否有任何形式的控件發生。 也許這是一個不好的方法,我不需要重寫ProcessCmdKey,但我必須做其他事情。
怎麼辦?
嘗試重寫['ProcessDialogKey'(https://msdn.microsoft.com/en-us/library/system.windows.forms。 control.processdialogkey(v = vs.110).aspx)。當然,不要忘記檢查「ESC」鍵。 –
你爲什麼需要這個。在模態WinForms對話框中,您可以通過添加一個取消按鈕來關聯Esc ... – Phil1970