2013-07-08 26 views
0

我有按鈕和tabcontrol在窗體上有一些選項卡。 第二個選項卡上有webbrowser-control。 我使用backgroundworker來創建其頁面。 字符串:Web瀏覽器控制異常如果選項卡沒有提前顯示

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

是形式構造的InitializeComponent()之後,只是一個字符串:

按鈕
bw.RunWorkerAsync(); 

單擊處理程序。 在按下按鈕後運行我的應用程序後,我得到「無法獲取'WebBrowser'控件的窗口句柄,不支持無窗口ActiveX控件。」但是,如果我選擇第二個選項卡(具有webbrowser),它會正確工作。 我該如何解決這個問題?

+0

您是否試過[this](http://stackoverflow.com/questions/4269800/webbrowser-control-in-a-new-thread/4271581#4271581)? – Jordy

+0

@Jordy我需要精確使用backgroundworker,但看起來我已經解決了這個問題。 – SerG

回答

0

將用戶界面方法的所有調用保留在同一個線程上解決了這個問題。 DoWorkEventHandler在另一個線程中運行,但RunWorkerCompletedEventHandler在同一個線程中運行,因此如果我將DoWorkEventHandler只獲取數據(形成網頁)並將其設置爲webBrowserAstrHost.DocumentText propetry到RunWorkerCompletedEventHandler,則一切正常。

相關問題