C# 在C Windows窗体中处理自动完成组合框中的鼠标单击
我在C Windows窗体项目中有一个ComboBox控件。我已经将控件的DropDownStyle设置为DropDown,并且还为控件配置了AutoComplete属性。这很有效 在这个控件上,我有一个要求,当我选择一个值后按Enter键时,它应该触发一个按钮单击。为此,我处理了keyDown事件,并检查了e.KeyCode==Keys.Enter是否运行良好 问题是: 当我开始键入时,控件的“自动完成”框打开,如果我从鼠标中选择其中一个,则会触发KeyDown事件,系统认为按下了Enter键 代码 行为 我从键盘输入B,点击B2,得到了警报C# 在C Windows窗体中处理自动完成组合框中的鼠标单击,c#,.net,winforms,combobox,autocomplete,C#,.net,Winforms,Combobox,Autocomplete,我在C Windows窗体项目中有一个ComboBox控件。我已经将控件的DropDownStyle设置为DropDown,并且还为控件配置了AutoComplete属性。这很有效 在这个控件上,我有一个要求,当我选择一个值后按Enter键时,它应该触发一个按钮单击。为此,我处理了keyDown事件,并检查了e.KeyCode==Keys.Enter是否运行良好 问题是: 当我开始键入时,控件的“自动完成”框打开,如果我从鼠标中选择其中一个,则会触发KeyDown事件,系统认为按下了Enter键
对可能出现的问题有什么想法吗?如果需要,很高兴与您分享更多详细信息。我非常确定,当您使用鼠标单击时,不会引发KeyDown事件。你有点不对劲。发布一篇演示问题的文章。@SriramSakthivel添加了代码。请现在查一下,有意思。我可以重现这个问题。不知道发生了什么,很高兴你能繁殖。任何指针都会有很大帮助。在这种情况下,我试图抑制事件。这会变得很棘手。接收到WM_KeyDown消息,不确定这是预期行为;让我们看看是否有具备win32知识的人可以提供解释。
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("hello");
}
private void cb_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
button1_Click(sender, e);
}
}