Как получить событие открытия формы (WinForm)? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть такая форма

public ManagerMainForm()
        {

            InitializeComponent();
...
}

Итак, если я запускаю приложение, MainForm открывается, и все в порядке, но мне нужно добавить одну новую форму в виде всплывающего окна.

public ManagerMainForm()
        {

            InitializeComponent();

           ....

            var dialog = new ValidationConfigDialog();
            dialog.ShowDialog();
...
}

И теперь эта ValidationConfigDialog (Форма) открывается быстрее, чем ManagerMainForm, и из-за ShowDialog она перестает открываться ManagerMainForm, пока я ее не закрою.

Итак, что Я нуждаюсь? Я хотел бы иметь событие OnFormLoaded (возможно, своего рода обратный вызов), которое уведомляет меня о том, что ManagerMainForm уже полностью загружен и виден, и я могу запустить другой соответствующий процесс.

Итак, вопрос - как получить такое событие или как реализовать такой лог c, позволяющий запускать процесс после загрузки формы?

1 Ответ

3 голосов
/ 05 мая 2020

Есть красивая страница MSDN , которая сообщает вам порядок событий, которые возникают при открытии формы. Порядок:

  • HandleCreated
  • BindingContextChanged
  • Load
  • VisibleChanged
  • Activated
  • Shown

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

Пример:

Shown += (sender, args) => {
    var dialog = new ValidationConfigDialog();
    dialog.ShowDialog();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...