覆盖继承的 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回到原来的样子。
我正在开发 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回到原来的样子。