Пользовательское событие на пользовательском элементе управления - PullRequest
1 голос
/ 08 сентября 2010

У меня есть пользовательский элемент управления, который мы назовем «TheGrid».

В элементах управления TheGrid есть еще один элемент управления, который мы назовем GridMenu.

GridMenu имеет собственный элемент управления в своей коллекции элементов управления.

Я бы хотел позволить разработчику, использующему этот элемент управления, связать метод уровня страницы с OnClick этой кнопки глубоко внутри GridMenu ala:

<customcontrols:TheGrid id="tehGridz" runat="server" onGridMenuButtonClick="mypagemethod" />

Ответы [ 2 ]

4 голосов
/ 08 сентября 2010

В GridMenu (который, как я полагаю, является другим настраиваемым элементом управления), выставьте событие ButtonClick, объявив его открытым:

public event EventHandler ButtonClick;

Если хотите, вы можете создать собственный обработчик событий, определив делегат и пользовательский класс аргумента события. Где-то в логике этого элемента управления вам нужно будет инициировать событие (возможно, в обработчиках событий Clicked кнопок, содержащихся в GridMenu; события могут каскадироваться). При написании кода на C # вам нужно проверить, что событие не равно нулю (имеется в виду, по крайней мере, один обработчик подключен), прежде чем вызывать событие.

Теперь это событие видно для TheGrid, который содержит ваше GridMenu. Теперь вам нужно создать «сквозной» канал, чтобы пользователи TheGrid могли присоединять обработчики, не зная о GridMenu. Это можно сделать, указав в TheGrid событие, напоминающее свойство, а также присоединяющее и отсоединяющее обработчики от внутреннего события:

public event EventHandler GridMenuButtonClick
{
   add{ GridMenu.ButtonClick += value;}
   remove { GridMenu.ButtonClick -= value;}
}

Из разметки элемента управления, содержащего элемент управления TheGrid, теперь вы можете указать обработчик события, прикрепив его к OnGridMenuButtonClicked так, как вам нужно.

0 голосов
/ 08 сентября 2010

Вы можете зарегистрировать обработчик события для этого события, используя делегатов.См. Следующие статьи MSDN:

http://msdn.microsoft.com/en-us/library/system.eventhandler%28VS.71%29.aspx

http://msdn.microsoft.com/en-us/library/aa720047%28v=VS.71%29.aspx

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