我有一个基本的自定义对话框,可与WinForms应用程序中的各种控件一起使用。该对话框如下所示:

由于各种原因,我不希望用户具有使用Enter键选择"is"选项(buttonYes)的能力。以前,我确实想要这种行为,并相应地设置了"is"按钮(AcceptButton)的buttonYes属性。我已经删除了此设置,将buttonYesAcceptButton属性设置为“无”,但是当按下buttonYes.Click键时,表单仍会触发Enter事件。我也曾尝试处理KeyPressKeyDown事件,但是使用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);
}

10-07 21:49