Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在用户控件中按enter键时,不会触发KeyDown事件_C#_Events_User Controls - Fatal编程技术网

C# 在用户控件中按enter键时,不会触发KeyDown事件

C# 在用户控件中按enter键时,不会触发KeyDown事件,c#,events,user-controls,C#,Events,User Controls,我有一个应用程序的UserControl和一个文本框。在该文本框中按enter键时,应激活一个按钮(基本上通过按enter键按下“Ok”,而不是用鼠标手动单击按钮) 因此,我在文本框中添加了一个KeyDown事件,并实现了以下代码: private void txtSearchID_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter && !txtSearchID.Text.Equals

我有一个应用程序的UserControl和一个文本框。在该文本框中按enter键时,应激活一个按钮(基本上通过按enter键按下“Ok”,而不是用鼠标手动单击按钮)

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

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

但当我想测试这个时,按Enter键时什么也没发生。奇怪的是,当按Enter键时,事件甚至不会被触发,而是每隔一个键触发一次。我遗漏了什么吗?

这是因为,当按下某个键时,它将转到聚焦于表单的控件,因为表单的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);
    }
}