C#如何逃避表单的Accept Button被触发

时间:2018-04-17 06:16:36

标签: c# winforms keypress acceptbutton

我有一个Windows窗体,其上放置了ListViewTextBox。此外,表单上有一个名为“提交”的按钮,AcceptButton设置为true。

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

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以根据主动控件设置AcceptButton,或者作为更好的选项,自己处理ProcessDialogKey。这是AcceptButton包含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);
}