Доступ к элементу управления родительской формы из UserControl - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть мастер настройки, который имеет всю логику за страницами внутри одной формы, MainWindow.

Я хочу создать отдельные элементы UserControl для каждого шага установки, а также получить доступ к некоторым элементам управления из формы MainWindow (например, кнопки «Следующая страница» и «Назад»).

Итак, допустим, я хочу отключить / включить кнопки навигации из моего UserControl. Мое решение:

Форма главного окна:

public static void SetNavigationButtons(MainWindow mainwindow, bool SetBackPageButton, bool SetNextPageButton)
{
    mainwindow.NextPageButton.Enabled = NextPageBtn;
    mainwindow.BackPageButton.Enabled = BackPageBtn;
}

UserControl:

private void EnableNavButtons()
{
    MainWindow.SetNavigationButtons(ParentForm as MainWindow, true, true);
}

Я также думал о EventHandlers:

UserControl:

public event EventHandler EnableNextPageButton;
public event EventHandler DisableNextPageButton;
public event EventHandler EnableBackPageButton;
public event EventHandler DisableBackPageButton;

private void EnableNavButtons()
{
    if (this.EnableNextPageButton != null)
       this.EnableNextPageButton(this, new EventArgs());

    if (this.EnableBackPageButton != null)
       this.EnableBackPageButton(this, new EventArgs());
}

И ловить события внутри моей формы MainWindow.

Может кто-нибудь предложить лучшее решение?

1 Ответ

0 голосов
/ 15 ноября 2018

В вашем пользовательском элементе управления вы создаете EventHandler следующим образом.

    public event EventHandler yourevent;

    private void button1_Click(object sender, EventArgs e)
    {
        if (yourevent!= null) yourevent(this, new EventArgs());
    }

тогда к событию загрузки формы нужно добавить:

yourusercrontol.yourevent + = имя пользователя;

Теперь добавьте это в форму:

    public void youreventname(object sender, EventArgs e)
    {
          //your code for the form
    }
...