我有一個窗體myForm,它的KeyPreview設置爲true。KeyPreview在控制之前沒有處理KeyUp事件
這個想法是,我想捕獲CTRL-Enter並激發表單的提交按鈕,無論哪個文本框(或其他控件)可能有焦點。
所以我成立了這個方法:
private void myForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.Enter)
{
btnCommit_Click(sender, new EventArgs());
}
}
這不正是它說。問題是,輸入關鍵筆劃也在具有焦點的文本框中觸發,所以文本框現在在一個詞的中間或光標所在的位置有一個分行符。根據MSDN文檔:
當此屬性設置爲true時,表單將接收所有KeyPress,KeyDown和KeyUp事件。在表單的事件處理程序完成鍵擊處理之後,將鍵擊分配給具有焦點的控件。
這是不幸的,不是真的,我已經通過代碼確認了文本框確實顯示了新的換行符,然後myForm_KeyUp代碼被觸發。
我已嘗試將兩個
e.Handled = true;
和
e.SuppressKeyPress = true;
沒有效果,因爲文本框已經具備了斷行。
任何想法?我錯過了什麼嗎?