在继承的Windows窗体上重写AcceptButton设置

时间:2015-03-03 13:03:20

标签: c# winforms visual-studio-2010

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

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

例如,如果焦点在cboTags并且输入,请按我需要调用cmdAddTag_Click,如果 shift + 输入按下我需要拨打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());
    }
}  

当我测试它并发现窗口关闭时,我意识到已在继承的表单上设置了AcceptButton属性。我无法找到解决方法。

修改

如果焦点位于表单上的其他位置,则行为应保持原样。只有在专注于某些控件时,我才需要更改 Enter 键的行为。

1 个答案:

答案 0 :(得分:0)

this.AcceptButton = null;

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

修改

通过“以编程方式控制”,我的意思是当你专注于一个你不希望激活AcceptButton的区域时,你运行该代码,然后当你离开它时,你将AcceptButton设置回原来的状态。 / p>