Как заставить главную форму прослушивать нажатие кнопки в элементе управления - PullRequest
0 голосов
/ 29 мая 2020

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

область основного содержимого, которая у меня есть, состоит из пустой панели (pnlMainContent), которая затем заполняется пользовательским элементом управления при нажатии кнопки / вкладки.

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

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

Как бы то ни было, я не вижу pnlMainContent из пользовательского элемента управления.

1 Ответ

1 голос
/ 29 мая 2020

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

Ваш пользовательский элемент управления

//Declare a delegate and Event.  Here called StatusUpdate
public delegate void StatusUpdateHandler(object sender, EventArgs e);
public event StatusUpdateHandler OnUpdateStatus;

//When button is clicked, this is trigged
private void Button1_Click(object sender, EventArgs e)
{
    //In here, you now trigger your custom event
    UpdateStatus(); 
}


private void UpdateStatus()
{
     //Create arguments.  You should also have custom one, or else return EventArgs.Empty();
     EventArgs args = new EventArgs();

     //Call any listeners
     OnUpdateStatus?.Invoke(this, args);

}

Затем в вашей основной форме подпишитесь на это событие

yourUserControl.OnUpdateStatus += customControl_OnUpdateStatus;
...

private void customControl_OnUpdateStatus(object sender, EventArgs e)
{
     ///Handle your event here        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...