无法将System.EventHandler类型隐式转换为System.EventHandler 错误

我试图在Windows手机应用程序中实现一个计时器。它在Windows Phone应用程序(Silverlight)中工作正常,但它不能在Windows Phone Blank App中工作。但是它给了我以下错误 –

Cannot implicitly convert type System.EventHandler to System.EventHandler 

这是我的代码 –

 namespace Timer { public partial class MainPage : Page { DispatcherTimer mytimer = new DispatcherTimer(); int currentcount = 0; public MainPage() { InitializeComponent(); mytimer = new DispatcherTimer(); mytimer.Interval = new TimeSpan(0, 0, 0, 1, 0); mytimer.Tick += new EventHandler(mytime_Tick); //HERE error comes Cannot implicitly convert type System.EventHandler to System.EventHandler } private void mytime_Tick(object sender,EventArgs e) { timedisplayBlock.Text = currentcount++.ToString(); } private void startButton_Click(object sender, RoutedEventArgs e) { mytimer.Start(); } } } 

我试过无法将类型’System.EventHandler’隐式转换为’System.EventHandler ‘以完成storyboard

但它甚至有帮助。我怎么能修复这个错误?

直接引用事件的方法处理程序将推断类型,满足generics类型声明要求。

 mytimer.Tick += mytime_Tick; 

或者,明确声明generics类型并使用通用EventHandler构造函数,

 mytimer.Tick += new EventHandler(mytime_Tick); 

会做的伎俩。

此外,根据文档 ,您的处理程序具有错误的签名。 它应该是:

 private void mytime_Tick(object sender,object e) { timedisplayBlock.Text = currentcount++.ToString(); } 

只需编写mytimer.Tick +=然后按两次TAB键它将修复您的错误。

如果要避免转换,可以始终执行以下操作:

 mytimer.Tick += (s, ev) => { mytime_Tick(s, ev); } 

如果您要validationnullables,这非常有用:

 mytimer.Tick += (s, ev) => { mytime_Tick?.Invoke(s, ev); } 

此致,Nicholls

正如错误消息试图告诉您的那样,您需要创建一个EventHandler

或者,更好的是,完全保留委托类型,只需添加方法名称即可。