无法将类型'System.EventHandler'隐式转换为'System.EventHandler <object>'以用于storyboard complete </object>

时间:2013-05-19 16:23:52

标签: c# windows-8 microsoft-metro

我已经阅读过关于此的几个主题,但我仍然不知道如何在我的情况下解决它。我来自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>不兼容,我找不到如何使它兼容,我也不知道这种方法是否正确。

我读了

Understanding events and event handlers in C#

C# Dynamic template implicit conversion error from System.EventHandler to System.EventHandler<TEventArgs>

defining event handler for Tick event of DispatcherTimer in windows 8 app

但是仍然找不到这种情况的解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:8)

尝试:

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

使用通用EventHandler<object>订阅:

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

当然,这与.NET Framework约定相反,即事件处理程序的第二个参数应该是EventArgs的实例(或从中派生的类)。我假设您正在运行另一个框架,例如Windows 8 Metro,其Timeline类定义了EventHandler<object>个{{1}}个签名的事件。