2016.6.18主窗体子窗体InitializeComponent()事件Load事件发生顺序以及SeleChanged事件的发生

Posted mol1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016.6.18主窗体子窗体InitializeComponent()事件Load事件发生顺序以及SeleChanged事件的发生相关的知识,希望对你有一定的参考价值。

主窗体,子窗体的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事件的发生的主要内容,如果未能解决你的问题,请参考以下文章

delphi 子窗体如何继承主窗体的方法

子窗体主窗体传参

在子窗体之前打开主窗体时出错

如果主窗体上有多个子窗体,则从 ACTIVE 子窗体打开记录

使用 VBA 从主窗体设置子窗体上的窗体属性

Ms Access中更新主窗体时更新子窗体的相关字段