C# WebBrowser:如何将事件处理程序的发送者传递给单独的方法?

C# WebBrowser: How to pass eventhandler's sender to a separate method?

我想在 WebBrowser.DocumentCompleted 事件处理程序中调用一些方法,如下所示:

private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
anotherMethodToBeCalled();
}
private void anotherMethodToBeCalled()
{
//doing something which needs to identify the sender 
browser...
}

是的,我当然可以直接把anotherMethodToBeCalled的动作放在WebBrowser1_DocumentCompleted里。

但我希望把那个方法分开,以便代码易于阅读。 这是一个动态的多标签 WinForms 浏览器,所以特定的发送者浏览器不能被静态命名。

如何将 senderBrowser 放入 anotherMethodToBeCalled() 中?

您的问题几乎可以自行解答:-)。您需要在您的方法中添加一个方法参数,并将事件的 sender 传递给它:

private void WebBrowser1_DocumentCompleted(object sender, 
                                           WebBrowserDocumentCompletedEventArgs e)
{
   AnotherMethodToBeCalled( ( WebBrowser )sender );
}

private void AnotherMethodToBeCalled( WebBrowser browser )
{
   //doing something which needs to identify the sender 
   //browser.DoSomething();
}

触发 DocumentCompleted 事件的浏览器位于事件处理程序的 sender 参数中。要获得 WebBrowser 的实例,您需要将其转换为该类型。