В чем разница между конструктором формы и методом form_Load?
Каков ваш хотя бы процесс размещения предметов в одном и другом?
В чем разница между конструктором формы и методом form_Load?
Каков ваш хотя бы процесс размещения предметов в одном и другом?
Код в конструкторе запускается сразу же при создании формы, независимо от того, показываете ли вы ее когда-либо. Код, выполняющийся в событии Form.Load
, является обработчиком событий, поэтому на самом деле у вас есть код в других классах (которые подписались на форму). Аналогично, вы можете (из формы) использовать метод Form.OnLoad для запуска кода.
Форма Load event (и метод overloadable OnLoad, который часто является лучшим выбором в самой форме) запускается после того, как форма была инициализирована. Это часто имеет свои преимущества, поскольку все элементы управления формы уже построены, и, что более важно, все макеты форм произошли.
Не используйте событие Load, переопределите метод OnLoad(). Это гарантирует, что все работает в предсказуемом порядке, когда вы выходите из класса формы. Вы должны использовать его только для инициализации формы, для которой требуется знать размер фактической формы. Он может отличаться от размера дизайна из-за масштабирования или пользовательских настроек, и фактический размер не знает, пока не будет создано собственное окно.
Инициализация элементов управления в методе OnLoad возможна, но может быть очень медленной, особенно для ListView и TreeView. Если вы инициализируете их в конструкторе, их можно инициализировать навалом, когда создаются их собственные элементы управления Windows.
Особое исключение: создание дочернего окна MDI всегда должно выполняться в OnLoad(), там есть ошибка в сантехническом коде, который испортил панель MDI при создании дочернего элемента в конструкторе.