C#Custom EventHandler

时间:2016-12-20 05:31:06

标签: c# asp.net

我在页面中有一个自定义事件处理程序,它由用户控件调用。

一切都很好,除了代码中显示错误(红色突出显示),但程序可以编译,并且能够在没有明显错误的情况下运行。

但是我想修复(或理解)视觉工作室为什么显示错误的原因

错误为enter image description here

代码是

-PAGE

Operator_agentcontrol2 agentcontrol = (Operator_agentcontrol2)Page.LoadControl("~/operator/agentcontrol2.ascx");
agentcontrol.displayLevel = (int)Common.WinLose_Level.lvChild4 + 10 + (Panel_agents.Controls.Count * 10);
agentcontrol.AppendProcess += Append_UC_Progress;//Error line

页面中的事件 -

public void Append_UC_Progress(object sender, EventArgs e)
{
        Common.WinLose_ProgressStage wps = (Common.WinLose_ProgressStage)e;
        progress.AppendProgress(wps);
        SaveProgressVS();
}

-USER CONTROL

public partial class Operator_agentcontrol2 : System.Web.UI.UserControl
{
    public event EventHandler<Common.WinLose_ProgressStage> AppendProcess;
}

由于

--- ---更新 我试图关注自定义事件处理程序https://msdn.microsoft.com/en-us/library/db0etb8x(v=vs.85).aspx

然后我收到了这个错误 enter image description here

--- ---更新 最终我发现实际上我的场景不需要使用像EventHandler

这样的东西

我更改了用户控件中的代码

public partial class Operator_agentcontrol2 : System.Web.UI.UserControl
{
    public event EventHandler AppendProcess;
}

通过执行此操作,错误消失了,用户控件仍然能够使用对象Common.WinLose_ProgressStage成功调用Page的函数。

1 个答案:

答案 0 :(得分:0)

据我所知,有两个错误被报道......

1 - 找不到Append_UC_Progess的合适重载(以Common.WinLose_ProgressStage作为参数)

2 - 未引用包含Common.WinLose_ProgressStage的程序集。

我建议发生的事情是,一旦它被编译,包含Common.WinLose_ProgressStage的程序集被拉入(可能由另一个引用的程序集),因此注意到它继承自EventArgs 。因此,它可以找到Append_UC_Progess的合适重载,并且一切都可以解决。

为了摆脱错误,我建议显式引用包含Common.WinLose_ProgressStage的程序集,以便Visual Studio可以在设计时看到继承树。