Вы всегда должны переопределять OnLoad (). Использование события подходит только тогда, когда другой класс будет заинтересован в событии. Для чего и нужны события. Другой класс, который интересуется событием Load, встречается очень редко, он действительно полезен для выполнения операций по размещению окон.
Тем не менее, событие Load хорошо работает с дизайнером, и программисты VB6 очень довольны им. Это не так уж и плохо, у вас могут возникнуть проблемы только тогда, когда вы начнете наследовать форму, а код не будет работать в правильном порядке.
Большая часть кода, который теперь вставляется в событие Load, действительно принадлежит конструктору. Вам нужно только OnLoad, если:
- Вам необходимо знать точный размер и положение окна. Лучше всего использовать OnLoad, окно-дескриптор создано, применяются пользовательские настройки (размер заголовка и границы), а форма была изменена в соответствии с указаниями свойства Form.AutoScaleMode. Окно еще не видно, очень хорошее время, чтобы переместить окно в другое место или расположить дочерние элементы управления.
- У вас есть код, которому нужно свойство Handle. Это тонко, вы не всегда можете сказать. Наличие такого кода в конструкторе вредно для здоровья, окно создается до завершения работы конструктора. Обычно это подходит к хорошему концу, но это может сделать создание формы очень медленным. Легко диагностировать из окна Call Stack.
- Чтобы избежать ошибки в реализации MDI. Если вы создадите дочерний MDI в родительском конструкторе, вы получите дублированные глифы, видимые при максимизации дочернего элемента. Вместо этого создайте ребенка в OnLoad.