Winforms - порядок событий Load и Activated

Это зависит от Ваших требований.

, Например, если Вы не заботитесь о свойствах искателя (например, сила искателя, видение, и т.д.), тогда я сказал бы, что haystack.find (игла) будет самым чистым решением.

, Но, если бы Вы действительно заботитесь о свойствах искателя (или каких-либо других свойствах в этом отношении), я ввел бы интерфейс ISearcher или в конструктора стога сена или в функцию для упрощения этого. Это поддерживает оба объектно-ориентированного проектирования (стог сена имеет иглы), и инверсия управления / внедрение зависимости (облегчает модульному тесту функция "находки").

11
задан HansA 16 September 2009 в 04:34
поделиться

3 ответа

Из Порядок событий в Windows Forms в MSDN:

Запуск и завершение работы приложения События

Классы Form и Control предоставляют набор событий, связанных с приложением запуск и выключение. Когда Windows Приложение Forms запускается, запускается события основной формы возникают в в следующем порядке:

System.Windows.Forms.Control.HandleCreated

System.Windows.Forms.Control.BindingContextChanged

System.Windows.Forms.Form.Load

System.Windows.Forms.Control .VisibleChanged

System.Windows.Forms.Form.Activated

System.Windows.Forms.Form.Shown

Когда приложение закрывается, события выключения основной формы поднимается в следующем порядке:

System.Windows.Forms.Form.Closing

System.Windows.Forms.Form.FormClosing

System.Windows.Forms.Form.Closed

System.Windows.Forms .Form.FormClosed

System.Windows.Forms.Form.Deactivate

Используете ли вы MessageBox в любом из событий запуска? Это может привести к тому, что события будут запускаться не по порядку из-за того, как цикл сообщений Windows Forms обрабатывает диалоговые окна.

20
ответ дан 3 December 2019 в 04:33
поделиться

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

Найдите ниже последовательность:

  • Активировано
  • Загрузить
  • Показано

РЕДАКТИРОВАТЬ: Пожалуйста, проверьте это очень интересный ответ на SO, который объясняет события загрузки WinForms и показанные события

РЕДАКТИРОВАТЬ: Теперь я создал одно значение по умолчанию Проект Winform с одним файлом winform. Теперь он дает мне последовательность

  • Загрузить
  • Активировано
  • Показано

Теперь я запутался.

2
ответ дан 3 December 2019 в 04:33
поделиться

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

2
ответ дан 3 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: