0

我有按钮和 tabcontrol 在我的表单上有一些选项卡。第二个选项卡上有 webbrowser-control。我使用 backgroundworker 来创建它的页面。细绳:

bw.DoWork += new DoWorkEventHandler((s, e) => { webBrowser.DocumentText = "qwerty"; });

在 InitializeComponent() 之后的表单构造函数中,只有一个字符串:

bw.RunWorkerAsync();

在按钮单击处理程序中。在按下按钮运行我的应用程序后,我得到“无法获取 'WebBrowser' 控件的窗口句柄。不支持无窗口 ActiveX 控件。” 但是,如果我之前选择第二个选项卡(具有网络浏览器),它会正常工作。我怎么解决这个问题?

4

1 回答 1

0

将用户界面方法的所有调用保持在同一个线程上可以解决这个问题。DoWorkEventHandler 在另一个线程中运行,但 RunWorkerCompletedEventHandler 在同一个线程中运行,所以如果我放入 DoWorkEventHandler 仅获取数据(形成网页)并将其设置为 webBrowserAstrHost.DocumentText 属性到 RunWorkerCompletedEventHandler,一切正常。

于 2013-07-08T12:08:28.107 回答