Это зависит от Ваших требований.
, Например, если Вы не заботитесь о свойствах искателя (например, сила искателя, видение, и т.д.), тогда я сказал бы, что haystack.find (игла) будет самым чистым решением.
, Но, если бы Вы действительно заботитесь о свойствах искателя (или каких-либо других свойствах в этом отношении), я ввел бы интерфейс ISearcher или в конструктора стога сена или в функцию для упрощения этого. Это поддерживает оба объектно-ориентированного проектирования (стог сена имеет иглы), и инверсия управления / внедрение зависимости (облегчает модульному тесту функция "находки").
Из Порядок событий в 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 обрабатывает диалоговые окна.
Активация предшествует загрузке. Если вы хотите написать какой-то код, который должен быть выполнен после загрузки, вы можете использовать показанный метод.
Найдите ниже последовательность:
- Активировано
- Загрузить
- Показано
РЕДАКТИРОВАТЬ: Пожалуйста, проверьте это очень интересный ответ на SO, который объясняет события загрузки WinForms и показанные события
РЕДАКТИРОВАТЬ: Теперь я создал одно значение по умолчанию Проект Winform с одним файлом winform. Теперь он дает мне последовательность
- Загрузить
- Активировано
- Показано
Теперь я запутался.
Несмотря на то, что это противоречит документации Microsoft, это может иногда происходить, когда вы обращаетесь к публичной переменной или функции формы загрузки извне. При необходимости вы можете установить флаг в показанном событии и использовать его для выхода из активированного обработчика до загрузки формы.