当我按下一个键时,webBrowser1_PreviewKeyDown会运行几次

时间:2012-06-10 12:24:19

标签: c#

private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
          if (click_counter > 0)
              {
                  click_counter = 0;
                  return;
                }                
            if (e.KeyCode == Keys.S)
                {

                    searchButton.PerformClick();
                }
        }

我将此代码添加到具有webbrowser对象的表单源代码中。 当我点击字母“S”时,问题是消息框弹出3次。

我该如何解决这个问题?

由于 编辑:删除MessageBox.Show建议!

解决:我通过解决方法解决了这个问题。我不能称之为真正的解决方案。我所做的是在开头添加一个if条件来控制点击次数。欢迎任何更好的解决方案!

1 个答案:

答案 0 :(得分:2)

在事件处理程序中使用MessageBox,它会引发一个消息循环,这会极大地干扰正常的事件流。特别是由于Windows通知引发并由消息循环调度程序提供的类型,如PreviewKeyDown。

使用Debug.Print()在“输出”窗口中显示诊断。当然不要忘记调试器断点。