Подтвердить что ты не робот

Конструктор форм против Form_Load

В чем разница между конструктором формы и методом form_Load?

Каков ваш хотя бы процесс размещения предметов в одном и другом?

4b9b3361

Ответ 1

Код в конструкторе запускается сразу же при создании формы, независимо от того, показываете ли вы ее когда-либо. Код, выполняющийся в событии Form.Load, является обработчиком событий, поэтому на самом деле у вас есть код в других классах (которые подписались на форму). Аналогично, вы можете (из формы) использовать метод Form.OnLoad для запуска кода.

Форма Load event (и метод overloadable OnLoad, который часто является лучшим выбором в самой форме) запускается после того, как форма была инициализирована. Это часто имеет свои преимущества, поскольку все элементы управления формы уже построены, и, что более важно, все макеты форм произошли.

Ответ 2

Не используйте событие Load, переопределите метод OnLoad(). Это гарантирует, что все работает в предсказуемом порядке, когда вы выходите из класса формы. Вы должны использовать его только для инициализации формы, для которой требуется знать размер фактической формы. Он может отличаться от размера дизайна из-за масштабирования или пользовательских настроек, и фактический размер не знает, пока не будет создано собственное окно.

Инициализация элементов управления в методе OnLoad возможна, но может быть очень медленной, особенно для ListView и TreeView. Если вы инициализируете их в конструкторе, их можно инициализировать навалом, когда создаются их собственные элементы управления Windows.

Особое исключение: создание дочернего окна MDI всегда должно выполняться в OnLoad(), там есть ошибка в сантехническом коде, который испортил панель MDI при создании дочернего элемента в конструкторе.