‘method’没有重载匹配委托’System.EventHandler’

我正在尝试构建一个程序,一旦按下按钮,每5秒钟将执行该function(OnTimed)。

以下是目前的代码:

private void bntCapture_Click(object sender, RoutedEventArgs e) { DispatcherTimer t1 = new DispatcherTimer(); t1.Interval = TimeSpan.FromMilliseconds(5000); t1.IsEnabled = true; t1.Tick += new EventHandler(OnTimed); t1.Start(); } void OnTimed(object sender, ElapsedEventArgs e) { imgCapture.Source = imgVideo.Source; System.Threading.Thread.Sleep(1000); Helper.SaveImageCapture((BitmapSource)imgCapture.Source); } 

当我运行代码时,它显示错误:

“’方法’没有重载匹配委托’System.EventHandler’

事件处理程序方法的签名与委托类型不兼容。

DispatcherTimer.Tick事件的订阅者必须是EventHandler委托类型,声明为:

 public delegate void EventHandler(object sender, EventArgs e); 

试试这个:

 void OnTimed(object sender, EventArgs e) { ... } 

如果您使用Windows Phone 8.1,则需要以下内容

 private void OnTimed(object sender, object e) { // You Code Here } 

方法OnTimed必须像这样声明:

  private void OnTimed(object sender, EventArgs e) { // Do something } 

Dispatcher.Tick是简单的EventHandler:

公共事件EventHandler Tick;

所以EventHandler参数应该是:

 void OnTimed(object sender, EventArgs e) 

不是

 void OnTimed(object sender, ElapsedEventArgs e) 

看起来你有点忽略了System.Timers.Timer.Elapsed事件,它是:

 public event ElapsedEventHandler Elapsed public delegate void ElapsedEventHandler( Object sender, ElapsedEventArgs e ) 

我知道这可能有点晚了,但我只是想为这个问题的任何人多投入一点:

 timer.Tick += new EventHandler(Method); public void Method(object sender, EventArgs e) { //Do Something } 

解决问题。

它也可以这样写: timer.Tick + = Method;

 timer.Tick += Method; public void Method(object sender, EventArgs e) { //Do Something } 

希望能帮助到你!

在我的情况下,我使用自定义winforms控件进行digitalPersona指纹识别。

当我试图重载“OnComplete”方法时,它会提出“没有超载……”

 private void FingerprintVerificationControl_OnComplete(object control, DPFP.FeatureSet featureSet, DPFP.Gui.EventHandlerStatus eventHandlerStatus) 

这就是它的样子。

我查看了程序集,我注意到第三个参数附加了’ref’关键字。 我在我的代码中添加了它并且它有效:

 private void FingerprintVerificationControl_OnComplete(object control, DPFP.FeatureSet featureSet, ref DPFP.Gui.EventHandlerStatus eventHandlerStatus)