我在页面中有一个自定义事件处理程序,它由用户控件调用。
一切都很好,除了代码中显示错误(红色突出显示),但程序可以编译,并且能够在没有明显错误的情况下运行。
但是我想修复(或理解)视觉工作室为什么显示错误的原因
代码是
-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。
--- ---更新 最终我发现实际上我的场景不需要使用像EventHandler
这样的东西我更改了用户控件中的代码
public partial class Operator_agentcontrol2 : System.Web.UI.UserControl
{
public event EventHandler AppendProcess;
}
通过执行此操作,错误消失了,用户控件仍然能够使用对象Common.WinLose_ProgressStage成功调用Page的函数。
答案 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可以在设计时看到继承树。