我有一个基本的自定义对话框,可与WinForms应用程序中的各种控件一起使用。该对话框如下所示:
由于各种原因,我不希望用户具有使用Enter
键选择"is"选项(buttonYes
)的能力。以前,我确实想要这种行为,并相应地设置了"is"按钮(AcceptButton
)的buttonYes
属性。我已经删除了此设置,将buttonYes
的AcceptButton
属性设置为“无”,但是当按下buttonYes.Click
键时,表单仍会触发Enter
事件。我也曾尝试处理KeyPress
或KeyDown
事件,但是使用Enter
键时不会触发这些事件。这是基本而烦人的事情,有没有人遇到过这个问题,我该怎么做才能实现我想要的功能?
最佳答案
要解决此问题,请将TabStop
属性设置为False
并使用以下代码:
private void form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
e.Handled = true;
}
或者,如您所说,您无法在KeyPressEvent处中断,需要处理ProcessKeyPreview
protected override bool ProcessKeyPreview(ref System.Windows.Forms.Message m)
{
int _ENTER = 13;
if (m.Msg == _ENTER)
{
//Do nothing
}
return base.ProcessKeyPreview(ref m);
}