我有一个winform窗体,它有典型的OK和Cancel按钮。
OK按钮被设置为默认按钮。当用户按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键似乎从未导致任何这些事件被击中。
实现这一目标的最佳方法是什么?
发布于 2012-03-27 06:19:32
尝试处理TextBox的Enter和Leave事件以清除窗体的AcceptButton属性:
private void txtFilter_Enter(object sender, EventArgs e) {
this.AcceptButton = null;
}
private void txtFilter_Leave(object sender, EventArgs e) {
this.AcceptButton = closeButton;
}然后,您可以根据自己的需要处理KeyUp事件:
private void txtFilter_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Search();
}
}发布于 2012-03-27 05:57:11
向textBox添加一个KeyDown事件处理程序,然后将以下内容添加到其中
if (e.KeyCode == Keys.Enter)
{
btnSearch.PerformClick();
}https://stackoverflow.com/questions/9880361
复制相似问题