Программисты, работавшие с VB6, как правило, помещают много кода в событие Load, в VB6 это событие использовалось для инициализации формы. Но это больше не подходит в Windows Forms, класс Form может иметь конструктор. Способ .NET - инициализировать объекты класса в конструкторе, есть очень мало веских причин не делать этого для класса Form.
Событие Load запускается сразу после создания дескриптора окна для формы, непосредственно перед тем, как оно станет видимым для пользователя. Вы должны писать код только в обработчике событий, который зависит от создания дескриптора. Там нет загрузки кода, который удовлетворяет этому требованию, кроме одного вида: код, который требует, чтобы размер окна и местоположение были известны.
Значения свойства Размер и Местоположение во время разработки формы не совпадают с их фактическими значениями, когда форма запускается на другом компьютере. Форма может быть изменена в соответствии с размером системного шрифта или настройкой DPI видеоадаптера на целевом компьютере. Пользовательские настройки также играют роль, пользователь мог выбрать другой размер шрифта для заголовка окна. Обычно вас это не волнует, если только вы не хотите, чтобы окно занимало определенную позицию на рабочем столе или не было выровнено с каким-либо другим окном.
Написание кода в событии Load, который выполняет такие вещи, как инициализация элементов управления TreeView или ListView, может значительно замедлить время запуска. Когда вы делаете это в конструкторе, Windows Forms еще не нужно обновлять физическое окно, оно еще не было создано. После создания собственного элемента управления Winforms инициализирует его массовым обновлением вместо одного узла / элемента за раз, как это происходит при выполнении кода в событии Load. Большая разница.
Последнее, но не менее важное: вы никогда не должны использовать событие Load, вы должны переопределить метод OnLoad (). Это гарантирует, что код выполняется в предсказуемом порядке, когда вы (или кто-то еще) наследуетесь от вашего класса Form. IntelliSense поможет вам написать этот метод, просто введите «protected onl» и нажмите вкладку, чтобы IntelliSense автоматически завершил метод. Обратите внимание, что у вас есть возможность поместить код до или после вызова base.OnLoad (), именно так вы контролируете, кто является боссом. Вы являетесь боссом, когда ставите его после, не часто правильный выбор, кстати.