C# 如何避免表单的接受按钮被触发

C# How to escape form's Accept Button from getting triggered

我有一个 Windows 表单,上面有一个 ListView 和一个 TextBox。表单上还有一个名为 'Submit' 的按钮,其中 AcceptButton 设置为 true。

现在,我的要求是,每当我加载表单并按下 Enter 键时,都会触发提交按钮,这很好。但是,当我 select TextBox 并在其中输入内容然后按 Enter 时,焦点 应该 来到 ListView ,而不是AcceptButton

我怎样才能做到这一点?

您可以根据活动控件设置 AcceptButton,或者作为更好的选择,为 AcceptButton.

处理 ProcessDialogKey yourself. This is the method which contains the logic

所以你可以覆盖它,例如:

protected override bool ProcessDialogKey(Keys keyData)
{
    if (keyData == Keys.Enter)
    {
        if (this.ActiveControl == this.textBox1)
        {
            MessageBox.Show("Enter on TextBox1 handled.");
            return true; //Prevent further processing
        }
    }
    return base.ProcessDialogKey(keyData);
}