按Enter键进入UserControl时,不会触发KeyDown事件

Fra*_*ich 2 c# events user-controls

我有一个用于应用程序的UserControl和一个文本框.当按下此文本框中的Enter键时,应该激活一个按钮(基本上按下"确定"按Enter键而不是用鼠标手动单击按钮).

所以我在我的文本框中添加了一个KeyDown事件并实现了以下代码:

private void txtSearchID_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter && !txtSearchID.Text.Equals(string.Empty))
    {
       button_Click(null, null);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我想测试时,按Enter键时没有发生任何事情.除此之外,奇怪的是,当按Enter键时,事件甚至不会被触发,而是每隔一个键.我错过了什么吗?

Saj*_*ran 9

这是因为,当按下某个键时,它将转到注重表单的控件,因为默认情况下Form的KeyPreview属性设置为False.你改变这样的事件

更改为KeyUP事件,

private void txtSearchID_Keyup(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter && !txtSearchID.Text.Equals(string.Empty))
    {
       button_Click(null, null);
    }
}
Run Code Online (Sandbox Code Playgroud)