0
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 条件来控制点击次数。欢迎任何更好的解决方案!

4

1 回答 1

2

不要在事件处理程序使用 MessageBox,它会产生一个消息循环,这会极大地干扰事件的正常流程。尤其是由于 Windows 通知而引发并由消息循环调度程序传递的类型,例如 PreviewKeyDown。

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

于 2012-06-10T12:34:16.850 回答