События пользовательского контроля - PullRequest
6 голосов
/ 22 февраля 2010

У меня есть пользовательский элемент управления с кнопкой загрузки. Событие нажатия кнопки выглядит следующим образом:

 protected void btnUpload_Click(object sender, EventArgs e)
{
  // Upload the files to the server
}

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

Ответы [ 3 ]

8 голосов
/ 22 февраля 2010

Вы должны создать событие в вашем пользовательском элементе управления, что-то вроде:

public event EventHandler ButtonClicked;

и затем в вашем методе запустить событие ...

protected void btnUpload_Click(object sender, EventArgs e)
{
   // Upload the files to the server

   if(ButtonClicked!=null)
      ButtonClicked(this,e);
}

Затем вы сможете прикрепить к событию ButtonClicked вашего пользовательского элемента управления.

0 голосов
/ 04 декабря 2012

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

public event EventHandler ButtonClicked
{
   add { btnUpload.Click += value; }
   remove { btnUpload.Click -= value; }
}

Теперь любой, кто подписывается на ваше событие ButtonClicked, фактически непосредственно подписывается на событие Click элемента управления btnUpload. Я считаю, что это гораздо более лаконичный способ реализовать это.

0 голосов
/ 22 февраля 2010

Создание открытого свойства в CodeBehind UserControl:

    public Button btn
    {
        get { return this.Button1; }
    }

Тогда на page_Load вы можете использовать его как:

    WebUserControl11.btn.Click += (s, ea) => { Response.Write("Page Write"); };
...