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

本文关键字:运行 几次 PreviewKeyDown 下一个 webBrowser1 | 更新日期: 2023-09-27 18:36:53

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

我将此代码添加到具有Web浏览器对象的表单源代码中。问题是当我单击字母"S"时弹出 3 次消息框。

我怎样才能摆脱这个问题?

谢谢已编辑:删除了消息框.按建议显示!

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

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

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

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