C# 无法隐式转换类型';System.EventHandler';至';System.EventHandler<;对象>';
我正在尝试在指定时间内淡入文本框。此代码适用于Windows Phone,但不适用于Windows 8应用程序。我做了一些修改来修复尽可能多的错误。但我无法解析其中一个:C# 无法隐式转换类型';System.EventHandler';至';System.EventHandler<;对象>';,c#,windows-8,C#,Windows 8,我正在尝试在指定时间内淡入文本框。此代码适用于Windows Phone,但不适用于Windows 8应用程序。我做了一些修改来修复尽可能多的错误。但我无法解析其中一个:无法将类型“System.EventHandler”隐式转换为“System.EventHandler”出现在表达式sb.Completed+=ehl上。完整函数如下: public static void Fade(UIElement target, double ValueFrom, double ValueTo,
无法将类型“System.EventHandler”隐式转换为“System.EventHandler”
出现在表达式sb.Completed+=ehl
上。完整函数如下:
public static void Fade(UIElement target, double ValueFrom, double ValueTo, double Duration)
{
DoubleAnimation da = new DoubleAnimation();
da.From = ValueFrom;
da.To = ValueTo;
da.Duration = TimeSpan.FromSeconds(Duration);
da.AutoReverse = false;
Windows.UI.Xaml.Media.Animation.Storyboard.SetTargetProperty(da, "opacity");
Windows.UI.Xaml.Media.Animation.Storyboard.SetTarget(da, target);
Windows.UI.Xaml.Media.Animation.Storyboard sb = new Windows.UI.Xaml.Media.Animation.Storyboard();
sb.Children.Add(da);
EventHandler ehl = null;
ehl = (s, args) =>
{
sb.Stop();
sb.Completed+= ehl; //error occurs here
target.Opacity = ValueTo;
};
sb.Completed += ehl; //error occurs here
sb.Begin();
}
事件处理程序的类型是EventHandler
,但您声明事件处理程序的类型是EventHandler
,而不是EventHandler
这正是错误消息告诉您的,因此您应该将事件处理程序的类型更改为EventHandler
顺便说一句,事件处理程序中的行
sb.Completed+=ehl;
看起来很奇怪。每次调用事件处理程序时,基本上都会再次将处理程序附加到事件上。但是上述方法在windows phone中运行良好。它不仅在windows 8应用程序中工作。我甚至尝试了EventHadler,但它不工作。您知道吗如果我将EventHandler
更改为EventHandler
,那么上面的原始代码将被编译。当你说“它不工作”时,也许你的意思是别的,但你必须更具体一些。