Как создать пользовательское событие для пользовательского элемента управления в веб-формах? - PullRequest
2 голосов
/ 27 июня 2011

Я новичок в пользовательских элементах управления в веб-формах, и мне нужно добавить событие в элемент управления, чтобы разработчики, использующие этот элемент управления, могли добавлять обработчики событий к этому событию.Каков наилучший способ сделать это?

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

Любая помощь очень ценится.Спасибо!

Редактировать

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

1 Ответ

7 голосов
/ 27 июня 2011

Сначала начните с создания класса для аргументов вашего события.

// this can house any kind of information you want to send back with the trigger
public class MyNewEventArgs : EventArgs { ... }

Затем создайте событие в классе элемента управления. это делается с использованием делегата и самого события.

// event delegate handler
public delegate void MyNewEventHandler(object s, MyNewEventArgs e);

// your control class
public class MyControl : Control
{
  // expose an event to attach to.
  public event MyNewEventHandler MyNewEvent;

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

// grab a copy of the subscriber list (to keep it thread safe)
var  myEvent = this.MyNewEvent;

// check there are subscribers, and trigger if necessary
if (myEvent != null)
  myEvent(this, new MyNewEventArgs());

Более подробную информацию можно найти в MSDN на , как создавать события .

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