c# - 无法将类型 'System.EventHandler' 隐式转换为 'System.EventHandler<object>' 以完成 Storyboard

标签 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

但是还是没有找到这个案例的解决方案。

提前致谢。

最佳答案

尝试:

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/

相关文章:

c# - 用于显示数据库项目的最佳控件是什么?

windows-8 - Expression Blend 中的 "star"测量值是什么?

c# - WPF 应用程序的 Windows 任务栏中显示错误大小的图标

jquery - 如何在点击时使用 jquery 调整临时 html 元素的大小?

c# - 在 JavaScript 函数中访问 C# 方法

c# - Windows 窗体 TreeView - 绑定(bind)分层递归数据源

c#避免变量声明

xaml - WinRT-XAML中的Click,Tapped和PointerPressed是同义词吗?

c# - 文件保存选取器 - 保存编辑后的图像(C# Metro 应用程序)

c# - 如何向用户请求使用 Windows 应用商店应用中的位置的权限?