Какие события запускаются, когда ShowDialog (ParentForm) вызывается в C # - PullRequest
7 голосов
/ 19 октября 2011

Простой вопрос. У меня есть MainForm и настройки. Форма настроек инициализируется один раз, а затем отображается каждый раз, когда пользователь нажимает кнопку. Мне нужно что-то сделать, когда нажата эта кнопка.

m_inputSettings.ShowDialog(this); //edit settings selected, so show that form

Это MainForm, вызывающая форму настроек, которая отлично работает. Но мне нужна форма настроек, чтобы что-то делать каждый раз, когда это происходит. В настоящее время я не могу понять, вызывает ли этот вызов какие-либо события, для которых я могу установить обработчики. Это вызывает событие? Если нет, есть ли другой способ, с помощью которого я могу сказать своей настройке сделать что-то каждый раз, когда происходит этот вызов?

Примечание. Любой код в основной форме после этой строки не выполняется до тех пор, пока не вернется SettingsForm, но это сделано намеренно.

Спасибо.

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

Ответы [ 3 ]

6 голосов
/ 19 октября 2011

Вы можете переопределить метод OnVisibleChanged в форме настроек. Обязательно вызовите base.OnVisibleChanged, чтобы не облажаться для потенциальных наблюдателей события (и всего, что базовый класс может делать внутри этого метода).

3 голосов
/ 19 октября 2011

FormShown событие - возникает только один раз, когда форма отображается в первый раз.OnPaint / OnActivate - каждый раз форма активируется, но эти события возникают даже при переключении с другим приложением, что, вероятно, вам не нужно делать.Если вы изменяете видимость формы, вы можете использовать OnVisibleChanged. Если вы минимизируете форму, вы можете использовать событие OnSizeChanged / OnLocationChanged.

Если ни один из них вам не подходит, сделайте открытое свойство и установите значение false, когда форма закрыта / скрыта, и установите значение true перед ее показом.OnActivate, используйте это свойство для выполнения своей задачи.

1 голос
/ 19 октября 2011

Возможно использовать событие VisibleChanged.

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