不能隐式转换类型'System.EventHandler'& # 39; System.EventHan

本文关键字:System EventHan EventHandler 转换 不能 类型 | 更新日期: 2023-09-27 18:14:15

我已经读了一些关于这个的线程,但我仍然不知道如何在我的情况下解决它。我来自Java,对c#还是个新手

我想在动画结束时附加侦听器:

myStoryBoard.Completed += new EventHandler(onMyStoryBoardCompleted);

:

private void onMyStoryBoardCompleted(object sender, EventArgs e)
{       
}

标题中出现了错误。我试着:

 myStoryBoard.Completed += new EventHandler<object>(onMyStoryBoardCompleted);

然后我得到:

no overload for 'onMyStoryBoardCompleted' matches delegate 'System.EventHandler<object>'

所以似乎签名与EventHandler <object>不兼容,我找不到如何使其兼容,我也不知道这种方法是否正确。

我读

了解c#中的事件和事件处理程序

c#动态模板隐式转换错误。EventHandler

为DispatcherTimer的Tick事件定义事件处理程序

但是我仍然没有找到解决这个问题的方法。

不能隐式转换类型'System.EventHandler'& # 39; System.EventHan

尝试:

private void onMyStoryBoardCompleted(object sender, object e)
{ }

并使用通用的EventHandler<object>:

订阅
myStoryBoard.Completed += new EventHandler<object>(onMyStoryBoardCompleted);

当然,这违背了。net框架的约定,即事件处理程序的第二个参数应该是EventArgs的实例(或其派生的类)。我假设您正在运行另一个框架,例如Windows 8 Metro,其Timeline类定义了具有EventHandler<object>签名的Completed事件。