2017-09-24 103 views
0

我有一個需要導航到一些網站,點擊一些按鈕的應用程序/鏈接導航,並最終將文件直接下載。WebBrowser控件導航不工作,Windows 10

我試圖用硒Firefox的驅動程序,但這種不斷打破每次火狐得到更新。

,我決定使用WebBrowser控件,而不是和我檢查了所有在線的例子,但由於某些原因,導航是不會發生和Documentcompleted事件不點火。

我創建了一個簡單的Windows窗體來測試應用程序,並把控制它,它是可見的。當代碼命中導航方法,它卡住,因爲它從來沒有執行DocumentCompleted事件。我試圖刪除wait方法,但在WebControl的文檔保持爲空,並且永遠不會執行DocumentCompleted。在Documentcompleted斷點從不打(我把斷點處,如果級別)

我使用Visual Studio 2015年,我已經安裝了Windows 10專業。我也有IE 11和Edge,但我的默認瀏覽器是Chrome。 (我不認爲這使用鉻) Windows應用程序正在運行.NET 4.5.2

客戶端也運行Windows 10.我讀了一些關於Windows 10更新潛在問題的回覆,並更改註冊表或卸載某些更新,但我真的不想走這條路。任何想法或替代?

這裏是背後 形式的代碼,我要前往,該網頁是公開的,不需要登錄。

public partial class WebBrowserForm : Form 
    { 

     bool pageLoaded = false; 

     public WebBrowserForm() 
     { 
      InitializeComponent(); 
     } 

     public void TestDownload() 
     { 
      WebBrowser browser = new WebBrowser(); 
      browser.Visible = true; 
      browser.AllowNavigation = true; 

      pageLoaded = false; 
      browser.DocumentCompleted += Browser_DocumentCompleted; 
      browser.Navigate("http://apps.ahca.myflorida.com/dm_web/"); 
      waitForPageLoading(); 
       //do something else here once the page is loaded 

     } 

     private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      if ((sender as WebBrowser).ReadyState == System.Windows.Forms.WebBrowserReadyState.Complete) 
      { 
       pageLoaded = true; 
      } 
     } 


     void waitForPageLoading() 
     { 
      while (pageLoaded == false) 
      { 
       Thread.Sleep(3000);// keep sleeping until the page is ready 
      } 
     } 

     private void btnTest_Click(object sender, EventArgs e) 
     { 
      TestDownload(); 
     } 
    } 
+0

我嘗試了Windows 7的機器上仍然無法正常工作 – user3547425

回答

1

由於您的瀏覽器控件是在窗體上,

你不應該做

web瀏覽器瀏覽器=新的web瀏覽器();

你實例化一個新的實例。