我正在开发一个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 键的行为。
答案 0 :(得分:0)
this.AcceptButton = null;
(或您以编程方式控制的某些变体)
修改强>:
通过“以编程方式控制”,我的意思是当你专注于一个你不希望激活AcceptButton的区域时,你运行该代码,然后当你离开它时,你将AcceptButton设置回原来的状态。 / p>