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

时间:2011-11-09 15:27:10

标签: c# .net wpf compiler-errors

我正在尝试构建一个程序,一旦按下按钮,每5秒钟就会执行一次该功能(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'

6 个答案:

答案 0 :(得分:11)

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

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

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

请改为尝试:

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

方法OnTimed必须像这样声明:

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

答案 3 :(得分:0)

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
)

答案 4 :(得分:0)

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

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
}

希望它有所帮助!

答案 5 :(得分:-1)

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

当我试图重载'OnComplete'方法时,它会出现'No overload ...'

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)