Winforms 如何在C+中处理事件+/CLI
有人能帮我修好我的功能吗?我正在尝试创建一个事件处理程序,但我不知道我的代码出了什么问题,所以这里是:Winforms 如何在C+中处理事件+/CLI,winforms,c++-cli,Winforms,C++ Cli,有人能帮我修好我的功能吗?我正在尝试创建一个事件处理程序,但我不知道我的代码出了什么问题,所以这里是: private: System::Void progressBar(System::Object^ sender, System::EventArgs^ e System::Windows::Forms::WebBrowserProgressChangedEventArgs) Handles WebBrowser->ProgressChanged { // code he
private: System::Void progressBar(System::Object^ sender, System::EventArgs^ e System::Windows::Forms::WebBrowserProgressChangedEventArgs) Handles WebBrowser->ProgressChanged
{
// code here....
}
我希望有人能帮助我,因为我已经在网上和一些论坛上看过了,但我没有找到任何运气,也找不到一个好的代码示例。您当前的事件处理程序函数定义有两个问题:
EventArgs^ e WebBrowserProgressChangedEventArgs
e
参数被声明为类型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);
问题是你没有任何代码。@siride看起来好像有代码。我在问题中看到了一些。问题是,它无法编译。