我已经阅读了一些关于此的主题,但我仍然不知道如何在我的情况下解决它。我来自 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

但仍然没有找到这种情况的解决方案。

提前致谢。

最佳答案

尝试:

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

并使用通用 EventHandler<object> 订阅:
myStoryBoard.Completed += new EventHandler<object>(onMyStoryBoardCompleted);

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

关于c# - 无法将类型 'System.EventHandler' 隐式转换为 'System.EventHandler<object>' 以完成 Storyboard,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16636830/

10-12 02:25