c# - 当我在两者之间使用 MessageBox.Show() 时,我的代码如何工作,没有它就不能工作?

标签 c# .net messagebox

我将 .NET 的 WebBrowser 嵌入到具有其他一些按钮的表单中。

我正在开发的应用程序不使用键盘,而是使用触摸屏。所以它实际上只使用鼠标。为了向下滚动网络浏览器,我制作了两个自定义按钮。当我单击这些按钮时,它应该向浏览器发送“PageDown”击键,并且浏览器应该向下滚动。

所以点击事件的代码如下:

        theForm.Activate();
        Application.DoEvents();
        theBrowser.Focus();
        Application.DoEvents();
        SendKeys.Send(key);

其中“theForm”是表单,“theBrowser”是浏览器实例。

所以当我点击按钮时,没有任何反应。当我第一次点击浏览器,然后点击按钮时,它确实有效。但我给它重点是吗?我是否为应用程序提供了足够的空间来设置焦点?

但是现在想想就奇怪了。当我放一个 MessageBox.Show("HELLO");在代码中,像这样:

    theForm.Activate();
    Application.DoEvents();
    theBrowser.Focus();
    MessageBox.Show("HELLO");
    Application.DoEvents();
    SendKeys.Send(key);

...当我点击按钮时它会立即工作。

所以问题是:为什么当我离开 MessageBox.Show() 时这段代码不起作用,但当我使用 MessageBox.Show() 时却起作用?

希望你能有所帮助,在此先感谢...

最佳答案

在我看来,这似乎是错误的处理方式。

按照 C++ sample 的思路尝试一些事情或者这个 C# sample .

如果您要模拟按键操作,至少要明确说明要向其发送消息的 HWND。

关于c# - 当我在两者之间使用 MessageBox.Show() 时,我的代码如何工作,没有它就不能工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/909465/

相关文章:

c# - 重试取消消息框

asp.net - MVC : User Message Stack implementations

Powershell显示弹出窗口并不断更新弹出窗口的while循环体

c# - 电源外壳 : Import-Module

c# - keyup 事件调用数据库函数并填充列表框

c# - 如何在 Web 浏览器元素中更改网页的背景和前景色?

.net - Windows上的蓝牙开发

C# 将字符串转换为日期时间

c# - Asp.Net Core 2 验证不记名 token

c# - CF 2.0 List<T>.Sort 上的 MethodAccessException