我有一个基本用户控件(继承自System.Web.UI.UserControl
)
public delegate void MyEventHandler(object sender, MyEventArgs e);
public event MyEventHandler ControlLoaded;
//Fire the event from here
protected override void OnLoad(EventArgs e)
{
MyEventArgs cmdEventArgs = new MyEventArgs("somearg");
ControlLoaded(this, cmdEventArgs);
}
我有几个从这个基本用户控件派生的控件。
在主机ASPX页面上,我需要订阅ControlLoaded事件。
protected void Page_Load(object sender, EventArgs e)
{
//subscribe to the event
//This line DOES NOT WORK as I cannot attach event to a base control - It needs an instance of the user control which I don't have
BaseUserControl.ControlLoaded += new MyEventHandler(ControlLoaded);
}
private void ControlLoaded(object sender, MyEventArgs e)
{
// some control has been loaded
}
如何订阅ControlLoaded
活动?感谢
答案 0 :(得分:0)
如果没有要订阅的实例,您无法真正订阅实例事件。您可以使用BaseUserControl上的静态事件执行此操作。然而,这不是一个好主意;因为在请求完成之前,您需要绝对确定取消订阅该事件,以防止内存泄漏。