【发布时间】:2012-04-10 10:37:29
【问题描述】:
我有一个带有典型 OK 和 Cancel 按钮的 winform 表单。
确定按钮被设置为默认按钮。当用户按下 ENTER 键时,表单关闭。
表单还有一个文本框,旁边有一个搜索按钮。文本框允许用户输入搜索文本,搜索按钮启动搜索功能。
我希望用户能够在文本框具有输入焦点并激活搜索功能时按 ENTER 键。
问题是表单在文本框的处理程序获取它之前抓取了 ENTER 键事件。
编辑:我尝试使用以下事件处理程序,但它们从未被击中,并且当按下 Enter 键时表单关闭:
private void txtFilter_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Search();
e.Handled = true;
}
}
private void txtFilter_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Search();
e.Handled = true;
}
}
我还尝试在表单上启用 KeyPreview 属性并为表单实现 KeyDown 事件处理程序,但 Enter 键似乎永远不会导致任何这些被击中。
最好的方法是什么?
【问题讨论】:
-
请提供更多细节 - 表单和文本框的事件捕获是如何实现的?
标签: c# .net winforms user-interface user-input