主窗体,子窗体的InitializeComponent(构造函数)、Load事件执行顺序
1、主窗体定义事件 new 主窗体() 构造函数进入主窗体InitializeComponent函数,该函数中有各字框体的new创建语句,因此:
2、依次执行各子窗体InitializeComponent函数
3、主窗体new事件结束后,并不创建任何窗体或子窗体,也就没有任何Load事件发生。直到主窗体Show事件。
4、主窗体Show事件后,顺序执行各子窗体Load事件,注意!!并不是先执行主窗体Load事件!
5、最后才执行主窗体Load事件
结论:主窗体的InitializeComponent事件早于子窗体InitializeComponent事件发生,但子窗体Load事件早于主窗体Load事件发生。
推论:
1、子窗体selechanged等事件在子窗体的Load事件中可能触发,此时主窗体Load事件尚未执行,可能会有空值情况出现
2、等到主窗体Load事件执行时,往往会给子窗体赋值,,又可能会触发子窗体selecange事件发生,注意是否会有空值出现
3、主窗体Load事件中为DV、Grid等窗体绑定数据源时,也会触发这些控件的selecanged事件,以至其它关联控件的selechagne事件发生,注意是否有空值出现
2016.6.18主窗体、子窗体InitializeComponent()事件、Load事件发生顺序以及SeleChanged事件的发生