2013-08-16 48 views
2

比方說,我有一個功能,例如:傳遞參數到WebBrowserDocumentCompleted

public TestStuff() { 

    string testing = "test"; 
    webBrowser2.Navigate("http://google.com"); 
    webBrowser2.DocumentCompleted += WebBrowserDocumentCompleted; 

} 

public WebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs Url) { 

    MessageBox.Show(testing); 
} 

我怎樣才能通過測試進入WebBrowserDocumentCompleted功能?我不確定如何將其添加爲參數。

回答

3

容易利用closures

public void TestStuff() 
{ 
    string testing = "test"; 
    webBrowser2.DocumentCompleted += (s, e) => 
     { 
      MessageBox.Show(testing); 
     }; 
    webBrowser2.Navigate("http://google.com"); 
} 
+0

是否正確(格式化/可讀性明智)不得不DocumentCompleted的導航上面打電話? –

+0

@Hubrid不要懶惰,試試吧...... – I4V

+0

好吧。還有一個問題,整個TestStuff()函數在while循環內部,所以它會中斷我的Navigate()調用,因爲它是異步的。我是否將整個while循環放入單獨的線程中,還是可以將我指向可能更好地解釋線程化/後臺工作的資源?謝謝。 –

0

試試這個

public TestStuff() 
    { 
     string testing = "test"; 
     webBrowser2.DocumentCompleted += ((WebBrowserDocumentCompletedEventArgs)delegate(object sender, EventArgs args) 
     { 
      evHandler(sender, testing); 
     }); 
     webBrowser2.Navigate("http://google.com"); 

    } 

    public void evHandler(Object sender, string testing) 
    { 
     MessageBox.Show(testing); 
    } 
+0

什麼是與使用老式代表的其他答案不同的是?順便說一句:你應該在調用'Navigate'之前附加到'DocumentCompleted'。 – I4V

+0

第二個參數的類型應該是'WebBrowserDocumentCompletedEventArgs'而不是'EventArgs' – I4V

+0

並且在C#方法名稱中以大寫字母開頭作爲約定。 – EZI