我有一个简单的win表单应用程序,带有选项卡和组合框控件。
当我在组合控件上按Enter键时,它会触发两个按键事件。如果您将组合样式更改为任何其他样式,则按键事件仅触发一个我期望的事物。
有没有人知道我为什么会收到单键输入键的两个按键事件? 我在Microsoft网站上发现了类似的问题,但这与.NET 1.0有关。
答案 0 :(得分:0)
它可能与Enter键有关,它具有Simple DropDown样式的预定义行为。
您可以在KeyDown事件中尝试解决此问题:
void comboBox1_KeyDown(object sender, KeyEventArgs e) {
e.SuppressKeyPress = true;
// do stuff
}
您可以猜到,KeyPress事件现在不会启动。
如果您仍需要处理KeyPress事件中的事情,可以尝试这种解决方法:
void comboBox1_KeyPress(object sender, KeyPressEventArgs e) {
if (e.KeyChar == (char)Keys.Enter) {
e.Handled = true;
} else {
// do stuff
}
}
答案 1 :(得分:0)
Combobox的KeyPress只接受'char'键。为了您的目的,请使用组合框和e.Handled属性的KeyDown事件。
然后您的代码将起作用,如下所示:
private void comboBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
comboBox2.KeyDown += new KeyEventHandler(comboBox2_SelectionChangeCommitted);
}
if (e.KeyCode != Keys.Enter)
{
e.Handled = false;
}
}