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