覆盖继承的 Windows 表单上的 AcceptButton 设置

Override AcceptButton Setting On Inherited Windows Form

我正在开发 winforms 应用程序。我正在处理的表单继承了一个基本表单。在基本表单上,AcceptButton 属性 设置为 cmdOK(基本上是保存和退出按钮)。这是必需的行为。

但是,我正在处理的表单有许多下拉列表,虽然重点放在它们上,但我需要更改回车键的行为。

例如,如果焦点在 cboTags 上并且按下 Enter 我需要调用 cmdAddTag_Click,如果 shift + Enter is press I need to call cmdRemoveTag_Click.我添加了以下代码:

private void cboTags_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter && e.Modifiers == Keys.Shift)
    {
        cmdRemoveTag_Click(new object(), new EventArgs());
    }
    else if (e.KeyCode == Keys.Enter)
    {
        cmdAddTag_Click(new object(), new EventArgs());
    }
}  

当我测试它并发现 window 关闭时,我意识到 AcceptButton 属性 已经设置在继承的表单上。我找不到绕过它的方法。

编辑

如果焦点在表单的其他任何地方,行为应该保持原样。只有当焦点在某些控件上时,我才需要更改 Enter 键的行为。

this.AcceptButton = 空;

(或您以编程方式控制的一些变体)

编辑:

"control programatically",我的意思是当你关注一个你不想让 AcceptButton 触发的区域然后你 运行 那个代码然后当你离开它时你设置 AcceptButton回到原来的样子。