事件处理程序在委托类型中抛出错误?

时间:2014-02-07 02:56:05

标签: c# delegates event-handling

我有复制散文的事件,但我在行cp.OnCopying中遇到问题:

  

'cp_copying'没有重载匹配委托   System.EventHandler'System.ComponentModel.ProgressChangedEventArgs'

行cp.OnCopyingComplete:

  

无法隐式转换类型'System.EventHandler'System.EventArgs''   到'CustomProses.Completedelegate'

代码:

public void SalinMultipleFile1()
{
   cp.OnCopying += new EventHandler<ProgressChangedEventArgs>(cp_copying);
   cp.OnCopyingComplete += new EventHandler<EventArgs>(cp_CopySucces);
   cp.CustomCopy(DGVFile, tempFolder);
}

void cp_copying(object sender, ProgressEventArgs e)
{
   dfe.pbPerFile.Increment(e.PercentDelta);
}

void cp_CopySucces(object sender, EventArgs e)
{
    dfe.l_proses.Text = "Succes Copy";
}

class Custom Proses

Class CustomProses
{
   public delegate void ProgressChangeDelegate(double Persentage, ref bool Cancel);
   public delegate void Completedelegate();
   public event ProgressChangeDelegate OnCopying;
   public event Completedelegate OnCopyingComplete;
}

有谁知道错误所在?

2 个答案:

答案 0 :(得分:1)

您需要将EventHandler分配更改为此类内容。

cp.OnCopying += cp_copying;
cp.OnCopyingComplete += cp_CopySucces;

您的事件处理程序还需要完全匹配事件,因此请将您的事件处理程序更改为:

void cp_copying(double value, ref bool e)
{
    //dfe.pbPerFile.Increment(e.PercentDelta);
}

void cp_CopySucces()
{
   // dfe.l_proses.Text = "Succes Copy";
}

答案 1 :(得分:0)

您的Completedelegate没有参数并返回无效。但是您试图将cp_CopySucces附加两个参数。

您的ProgressChangeDelegate需要一个double和一个bool参数,但您尝试将其附加到cp_copying方法,该方法需要object和{{ 1}}作为参数。

您的方法和代理签名匹配。错误很明显。我认为您需要阅读Delegates Tutorial