您当前的事件处理函数定义有两个问题:
您用于声明第二个参数的语法无效。你有这个:
EventArgs^ e WebBrowserProgressChangedEventArgs
该e
参数被声明为 type EventArgs^
,然后在它之后添加了一个随机的其他类型 ( WebBrowserProgressChangedEventArgs
)。这将导致编译器错误,因为编译器不知道该怎么做,因为它不属于那里。
如果您想e
成为类型WebBrowserProgressChangedEventArgs
,则需要将其移至开头并删除EventArgs
。
请记住,它WebBrowserProgressChangedEventArgs
是 的子类EventArgs
(您可以知道它是因为它以相同的名称结尾,这是 WinForms 中的通用命名约定),所以一切EventArgs
都有并且可以做,所以WebBrowserProgressChangedEventArgs
. 编译器已经知道这一点,所以你不需要告诉它。
那么,参数的正确声明e
是这样的:
WebBrowserProgressChangedEventArgs^ e
据我所知,Handles
关键字(在定义事件处理程序方法之后添加)仅存在于 VB.NET 中。所以以下是无效的:
Handles WebBrowser->ProgressChanged
在其他语言(如 C++/CLI 和 C#)中,您需要通过代码手动连接事件处理程序。看起来像这样:
obj->Event += gcnew EventHandler(this, Obj_Event);
因此,综上所述,事件处理程序方法的正确签名是:
Void progressBar(Object^ sender, WebBrowserProgressChangedEventArgs^ e)
{
// code goes here...
}
在其他地方,您需要将此事件处理程序方法连接到一个事件,如下所示:
WebBrowser->ProgressChanged += gcnew WebBrowserProgressChangedEventArgs(this, progressBar);