Как выполнить код только после закрытия дочерней формы?C # - PullRequest
0 голосов
/ 25 сентября 2019

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

Вот пример.

private void SomeButton_Click(object sender, RibbonControlEventArgs e)
        {
            var assignCategory = new AssignCategory();
            assignCategory.Show();

        /// Some code to run only after assignCategory pop up is closed.
        }

Я не могу запустить /// some code на private void AssignCategory_FormClosed(object sender, FormClosedEventArgs e), потому что код будет работать только при нажатии SomeButton.

Заранее спасибо.

1 Ответ

3 голосов
/ 25 сентября 2019

Метод Form.Show() вернется после показа дочерней формы, не удерживая выполнение, пока дочерняя форма не будет закрыта.В качестве альтернативы вы можете использовать Form.ShowDialog(), чтобы остановить выполнение, пока форма не закроется.

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

Чтобы запустить код только после нажатия кнопки OK, вы должны объявить EventHandler в вашей дочерней форме следующим образом:

public event EventHandler OnOkClick;

Затем вызвать событие внижняя или определенная точка в вашей кнопке:

OnOkClick();

В своем главном конструкторе форм вы просто подписываетесь на это событие

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