1

我有带有选项卡和组合框控件的简单 win 表单应用程序。

  • 组合框控件的样式为“简单”。
  • 选项卡控件具有按键事件。

当我按下组合控件上的 Enter 键时,它会触发两个按键事件。如果您将组合样式更改为任何其他样式,则按键事件只会触发我所期望的一个。

有没有人知道为什么我会为单次输入按键获得两个按键事件?我在 Microsoft 网站上发现了类似的问题,但这与 .NET 1.0 有关。

http://support.microsoft.com/kb/814970

4

2 回答 2

0

它可能与具有 Simple DropDown 样式的预定义行为的 Enter 键有关。

您可以在 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
  }
}
于 2013-04-22T16:50:24.400 回答
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;

            }
        }
于 2014-01-01T16:07:39.143 回答