最近,在编写一个数据采集程序时,采用了多窗体形式。其中窗体Form2用来以表格方式显示数据,因此把数据显示程序写在了此窗体的Form_Load()中,并在主窗体中设置一个按钮运行Load Form2。但是运行中发现,只有第一次时可以显示正确的数据,以后每次调用时数据并不更新。
经查,原来Load Form2 只在第一次调用时运行Form_Load() 中的代码。为此在显示数据窗口退出时加了 Unload Form2语句,希望将FORM2卸载。但重新运行Load Form2 后仍然显示原来的数据。也有人建议将FORM2属性中的AUTODRAW由FALSE改为TRUE,实践证明也是没有作用的。
通过实验证明,以下两种方法是可行的:
(1)把数据显示的程序写到主窗口下调用FORM2的按钮过程中。这时在调用FORM2之前数据已更新。
(2)在Form2中另建一个过程 Form2_Activate(),将把数据显示的程序写到此过程中。由于Form2_Activate()是在窗体重新获得焦点时触发,因此程序在每次显示FORM2时运行,数据及时得到更新。
总结:form_load 和form_Activate 的区别
form_load,发生在装载窗体对象的时候
form_Activate 发生在窗体得到焦点的时候
他们触发的时机完全不同,一个窗体,正常情况下,在其生存期内,form_load只会发生一次,而form_activate可能会发生无数次。
文章评论(0条评论)
登录后参与讨论