Как вызвать делегирование щелчка кнопки делегата одного ascx на другое нажатие кнопки ascx? - PullRequest
0 голосов
/ 30 января 2012

У меня есть страница ascx, предположим, что page1.ascx у меня есть обработчик события нажатия кнопки

btnSave.Click +=
      delegate
            {
                if (Save != null) Save(this, EventArgs.Empty);                   

            };

, и у меня есть другая страница ascx, предположим, что page2.ascx, что у меня есть нажатие кнопки

protected void btnEdit_Click(object sender, EventArgs e)
{
  // want to call 
   btnSave.Click +=delegate
                 {
                if (Save != null) Save(this, EventArgs.Empty);                   

            };
}

Я хочу вызвать btnSave делегат щелчка (page1.ascx) на btnEdit (page2.ascx). Возможно ли, если да, то как?

Ответы [ 2 ]

1 голос
/ 30 января 2012

Если бы я понял, что вы имеете в виду, один из способов был бы следующим:

public class Control1 : UserControl {
   public delegate void ButtonClickHandler(object sender, EventArgs e);

   public ButtonClickHandler ButtonClickEvent {get;set;}

   public void Save(object sender, EventArgs e) {
      //do something
      if (ButtonClickEvent != null) {ButtonClickEvent(sender, e);}
      //do something
   }
}

public class Control2 : UserControl {
   protected override void OnLoad(EventArgs e) {
      control1.ButtonClickEvent += YourMethod;
   }

   protected void YourMethod(object sender, EventArgs e) { // do something here ... }
}

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

0 голосов
/ 30 января 2012

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

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