您当前的事件处理函数定义有两个问题:
您用于声明第二个参数的语法无效。你有这个:
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);