我的代码中出现了以下多种情况:
this.webBrowserCtrl.DocumentCompleted -= new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.LoginScreenLoaded);
this.webBrowserCtrl.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.AttemptLoginAnalysis);
我希望删除它并使用一个带2个输入的简单方法 - 但是我不知道它们的类型。
private void DefineNewDocumentCompletedHandler(TYPEA inputA, TYPEB inputB)
{
this.webBrowserCtrl.DocumentCompleted -= new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(inputA);
this.webBrowserCtrl.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(inputB);
}
有谁知道TYPEA和TYPEB应该是什么?或者另一种实现目标的方法?
答案 0 :(得分:3)
在输入参数上使用委托类型,如下所示:
private void DefineNewDocumentCompletedHandler(WebBrowserDocumentCompletedEventHandler inputA, WebBrowserDocumentCompletedEventHandler inputB)
{
this.webBrowserCtrl.DocumentCompleted -= inputA;
this.webBrowserCtrl.DocumentCompleted += inputB;
}
使用示例:
DefineNewDocumentCompletedHandler(this.LoginScreenLoaded, this.AttemptLoginAnalysis);
语法new <delegate type>(<name of method>)
是一个C#1.x构造,现在已经过时了。从C#2.0开始,您只需指定没有括号的方法名称,编译器就会自动将它包装在委托实例中。
答案 1 :(得分:2)
TYPEA和TYPEB属于WebBrowserDocumentCompletedEventArgs
答案 2 :(得分:1)
您还可以对Christian描述的方法进行扩展方法。
public static void DefineNewDocumentCompletedHandler(this WebBrowser webBrowser, WebBrowserDocumentCompletedEventHandler inputA, WebBrowserDocumentCompletedEventHandler inputB)
{
webBrowser.webBrowserCtrl.DocumentCompleted -= inputA;
webBrowser.webBrowserCtrl.DocumentCompleted += inputB;
}
并像
一样使用它this.webBrowserCtrl.DefineNewDocumentCompletedHandler(this.LoginScreenLoaded, this.AttemptLoginAnalysis);