Подписка на событие, определенное в базовом пользовательском элементе управления - ASP.NET - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть базовый пользовательский элемент управления (унаследовано от 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? Спасибо

1 Ответ

0 голосов
/ 05 апреля 2011

Вы не можете подписаться на событие экземпляра, не имея экземпляра для подписки. Вы можете сделать это, используя статическое событие BaseUserControl. Это, однако, не очень хорошая идея; поскольку вам нужно быть абсолютно уверенным, чтобы отписаться от этого события до завершения запроса, чтобы предотвратить утечку памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...