[英]How can I fire a Button Click event when Enter Key is pressed based on what textbox has focus?
[英]How can I override the default button on a form when focus is in a TextBox
我有一個winform表單,它有典型的OK和Cancel按鈕。
確定按鈕被設置為默認按鈕。 當用戶按下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鍵似乎永遠不會導致任何這些屬性被命中。
完成此任務的最佳方法是什么?
嘗試處理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();
}
}
將KeyDown事件處理程序添加到textBox,然后將其添加到它
if (e.KeyCode == Keys.Enter)
{
btnSearch.PerformClick();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.