【问题标题】:How to give an event handler access to member data?如何让事件处理程序访问成员数据?
【发布时间】:2012-06-18 15:52:47
【问题描述】:
         myWebClient->DownloadProgressChanged += gcnew DownloadProgressChangedEventHandler( &Form1::DownloadProgressCallback );

给出错误:

1>.\Form1.cpp(26) : error C3352: 'void Form1::DownloadProgressCallback(System::Object ^,System::Net::DownloadProgressChangedEventArgs ^)' : 指定的函数与委托类型不匹配'void (System::Object ^,System::Net::DownloadProgressChangedEventArgs ^)'

文档使用静态非成员函数作为此委托参数,但我想更新Form1 类的进度条成员。我在这里做错了什么?

我使用的是 .NET 2.0,所以请尽量保持语言过时。

【问题讨论】:

    标签: c++ .net delegates


    【解决方案1】:

    成员函数的委托将被声明(在表单内):

     myWebClient->DownloadProgressChanged += gcnew DownloadProgressChangedEventHandler(this,  &Form1::DownloadProgressCallback );
    

    基本上,第一个参数是定义成员函数的对象。在这种情况下,this 应该可以工作。

    【讨论】:

      【解决方案2】:

      将对象传递给委托构造函数。

      gcnew DownloadProgressChangedEventHandler( this, &Form1::DownloadProgressCallback );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        • 2010-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多