我有一个简单的win表单应用程序,带有选项卡和组合框控件。
- 组合框控件的样式为"Simple"。
- Tab控件有键下事件。
当我按下组合控件上的Enter键时,它会触发两个键下事件。如果您将组合样式更改为任何其他,则按下键事件只触发一个,这是我所期望的。
有没有人有任何想法,为什么我得到两个键下事件为单一进入键按?我在微软网站上发现了类似的问题,但这与。net 1.0有关。
http://support.microsoft.com/kb/814970这可能与输入键具有简单下拉样式的预定义行为有关。
你可以在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
}
}
KeyPress from Combobox只接受'char'键。对于您的目的,请使用KeyDown事件的组合框和e.h handled属性。
那么你的代码将工作,看起来像:
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;
}
}