在Win7系統的VS2012下的Form中,響應TextBox的KeyDown事件后,當按下回車鍵時發出“咚”的一聲,百度后得到一下這樣一個說法:
這是對於 windows 窗口標准程序而言,每個窗口/對話框有兩個特殊的按鈕,一個是 Enter 按下時的按鈕,一個是 Esc 按下時的按鈕,它們分別對應 Form 對象的 AccpetButton 與 CancelButton 屬性,當你在一個非支持輸入換行的控件里回車時,這個事件由窗口對象管理,如果它沒有找到 AccpetButton 或對應的按鈕當前不可用,就會發出這個提示音,表示窗口有一些問題不能“確定”。
如果你一定對這個提示音這么不爽的話,可以使用以下方法取消這個操作,但要小心不要讓那些有回車操作的多行框之類的也不能正常輸入回車。
protected override bool ProcessDialogKey(Keys keyData) { if (keyData == Keys.Enter) { return true; } return base.ProcessDialogKey(keyData); }
這樣設置后“咚”的一聲確實是沒有了,可是卻導致KeyDown事件失效,於是又找了另外更好的解決方法:
響應KeyPress事件,並令參數中的 KeyPressEventArgs e 設置為 e.Handled = true;
代碼如下:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == System.Convert.ToChar(13)) { e.Handled = true; } }
