【问题标题】:Subscribing event of Dynamically Loaded User Control动态加载的用户控件的订阅事件
【发布时间】:2011-10-27 10:28:05
【问题描述】:
我有两个用户控件。一个是静态加载的,另一个是动态加载的。
在aspx页面中我可以为静态用户控件编写如下。
ProgramAddSchedule.onNewProgram += new AddProgram.OnNewProgramClick(onNewProgram_btnHandler);
但动态加载控件的事件我无法获取
Control myUserControl = (Control)Page.LoadControl("~/View/EditScheduleProgram.ascx");
如何获取动态加载控件的事件?
【问题讨论】:
标签:
c#
asp.net
.net
vb.net
user-controls
【解决方案1】:
假设类型名称跟在文件名称后面,您可以将其强类型化为该类型,这样,
var myUserControl = Page.LoadControl("~/View/EditScheduleProgram.ascx") as EditScheduleProgram;
然后,您可以访问由该类型公开的任何自定义(或特定)事件,但不能由 Control 公开,所以,
myUserControl.MyEvent += MyEventHandler;
【解决方案2】:
转换为您的控件类型
YourControlType myUserControl =(YourControlType)Page.LoadControl("~/View/EditScheduleProgram.ascx");
myUserControl.onNewProgram += new AddProgram.OnNewProgramClick(onNewProgram_btnHandler);