I would like someone to try and explain the difference between these. More specifically, example usage scenario’s.
I am refactoring some Windows Form code and a Form has some code in the Form_Load() event and also in a protected override void OnLoad() event that calls base.OnLoad(e); Now I traced it and the Override fires first and then immediately fires off the event version.
So, which one is typically used and why?
You should always override OnLoad(). Using the event is only appropriate when another class would be interested in the event. Which is what events are for. Another class being interested in the Load event is very rare, only really useful to do window arrangement stuff.
Still, the Load event works well with the designer and VB6 programmers are very comfortable with it. It isn’t horribly wrong, you’d only get in trouble when you start inheriting the form and code doesn’t run in the right order.
Most code that now gets put in the Load event really belongs in the constructor. You only need OnLoad if: