2011-10-26 22 views
0

我與C#編程語言中首發出場。我把一個簡單的網頁瀏覽器放到窗體中。我給瀏覽器分配了一個url地址,我想查看瀏覽器是否成功打開了我提供的鏈接。DocumentCompleted

我知道有一個叫

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 

然而,瀏覽器分配URL後,我想寫類似

if (webBrowser1_DocumentCompleted) 
    { 
    //my code here 
    } 

這是可能的事件處理程序?我知道你可以使用「WebBrowserReadyState」,但我寧願嘗試使用Document準備好。

+0

不知道我照做,你的if語句基本上是什麼事件做。事件只會在webBrowser1_DocumentCompleted發生時觸發。你不能在if語句中使用一個事件。 – MaxSan

+0

這是行不通的,瀏覽器下載頁面需要花費時間。在DocumentCompleted事件觸發之前,您無能爲力。試圖等待它會導致程序死鎖。 –

回答

3

我不知道如果這是你在找什麼,但是這是我想嘗試:

首先在窗體類的構造函數創建一個事件處理:

public void Form1() 
{ 
    webBrowser1.DocumentCompleted += 
    new WebBrowserDocumentCompletedEventHandler(WebDocumentCompleted); 
} 

此之後,你需要創建一個當事件被觸發,將調用方法:

void WebDocumentcompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    //Your code here 
} 

希望這有助於!

1

由於網頁加載和渲染異步運行,你必須做你的邏輯在事件方法(將文件加載後應運行)。您可以通過這種方式訂閱事件:

webBrowser.DocumentCompleted += webBrowser_DocumentCompleted; 

你必須在你的類與此簽名的方法,可以在其中進行編碼你想要的:

void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    // Do something after the document is loaded. 
} 
0

您可以檢查從DownloadDataCompletedEventArgs(E)的結果

class Program 
    { 
     static void Main(string[] args) 
     { 

      WebClient wb = new WebClient(); 
      wb.DownloadDataAsync("www.hotmail.com"); 
      wb.DownloadDataCompleted += new DownloadDataCompletedEventHandler(wb_DownloadDataCompleted); 
     } 

     static void wb_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) 
     { 
      if (e.Cancelled)//cancelled download by someone/may be you 
      { 
       //add necessary logic here 
      } 
      else if (e.Error)// all exception can be collected here including invalid download uri 
      { 
       //add necessary logic here 
      } 
      else if (e.UserState)// get user state for asyn 
      { 
       //add necessary logic here 
      } 
      else 
      { 
       //you can assume here that you have result from the download. 
      } 

     } 
    } 
相關問題