Управление пользователями ASP.Net - VS Event Wireup - PullRequest
0 голосов
/ 21 сентября 2009

Итак, у меня есть пользовательский элемент управления. У меня есть событие (SelectionChanged), и я хочу, чтобы кто-нибудь, кто когда-либо использовал мой элемент управления, сделал следующее, чтобы подключить событие:

  1. перетащите элемент управления на страницу
  2. в режиме конструктора, нажмите на элемент управления
  3. просмотр обработчиков событий элементов управления (из окна свойств)
  4. найти событие SelectionChanged
  5. дважды щелкните и позвольте Visual Studio создать функцию кода и связку на странице aspx.

Как мне это сделать? У меня есть настройка элемента управления, чтобы пользователь мог вручную вводить данные о событиях и кодировать события, но я хочу, чтобы Visual Studio сделала это.

В настоящее время, когда разработчик отбросил мой элемент управления на странице, он может щелкнуть по нему и просмотреть свойства, но события недоступны (молнии даже нет).


Мои мероприятия являются публичными. Вот они:

public delegate void SelectionChangedDelegate(object sender, SelectionChangedEventArgs e);
public event SelectionChangedDelegate SelectionChangedEvent;

1 Ответ

2 голосов
/ 22 сентября 2009

Я не понимаю, как молнии нет. Ваш контроль наследуется от System.Web.UI.HtmlControls.HtmlControl или System.Web.UI.Control или другого производного элемента управления?

Если вы наследуете один из этих элементов управления, вы должны увидеть унаследованные события в окне свойств.

Тот факт, что молнии нет, заставляет меня поверить, что вы не наследуете ни от одного из контрольных классов.

EDIT: Ну, тебе это не понравится. UserControl не ведет себя так же, как WebControl. И как таковой, VS Editor не связывает события.

Если Event Wireup критичен для вас (если это будет проданная библиотека), я бы порекомендовал вам переписать элемент управления как WebControl. Это потребует от вас добавления всех элементов управления программно в методе переопределения CreateChildControls.

Вы также можете обернуть свой UserControl внутри WebControl и вспомнить все события таким образом.

Удачи!

...