这就是我所拥有的:
public void initiate(WebBrowser browser)
{
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(refDocumentCompleted);
// navigate browser to the referal Uri
browser.Navigate(refreral);
browser.DocumentCompleted -= refDocumentCompleted;
//remove here so that it doesn't do this everytime a document is completed, i want it just in this method
}
private void refDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// want to call navigate method on browser here. but Its out of scope.
}
我希望它能够导航到referral
,然后一旦加载导航到另一个存储为类中全局字符串的页面。
我确信我的麻烦来自于对事件如何运作的理解不足,我试图阅读它,但似乎无法理解它,但不认为我需要创建我自己的经纪人。
答案 0 :(得分:2)
您已拥有webbrowser对象。你只需要施展它:
((WebBrowser)sender).Navigate(...);
等
答案 1 :(得分:1)
使用lambdas,例如:
public void initiate(WebBrowser browser)
{
browser.DocumentCompleted += (sender, e) => {
browser.DoStuff(); // it's in scope via closure
};
// etc
}
编辑:添加/删除它,将lambda分配给变量:
public void initiate(WebBrowser browser)
{
var doStuff = (sender, e) => {
browser.DoStuff(); // it's in scope via closure
};
browser.DocumentCompleted += doStuff;
// etc
browser.DocumentCompleted -= doStuff;
}
答案 2 :(得分:0)
在initiate
方法中,WebBrowser
存储在实例字段中,然后从事件处理程序中引用它:
private WebBrowser _browser;
// inside initiate
_browser = browser;
// Inside event handler
_browser.Navigate(...);