三个测试Private Sub Form_Activate() Debug.Print "Activate" End SubPrivate Sub Form_Initialize() Debug.Print "initialize" End SubPrivate Sub Form_Load() Debug.Print "load" End Sub结果 initialize load Activate
Initialize 这个事件只有在应用程序第一次创建窗口实例的时候才触发。在一个有启动窗口的应用程序中,发生的第一个事件是Initialize事件。,如果,例如下面的语句被执行: Set x = New Form1 需 要在Form_load事件加载之前完成的任务可以(在Visual Basic4.0)在Form_Initialize语句中执行。任何在窗口创建后只需执行一次的语句可以放在这里。但是你应该小心这里不应该涉及到窗口 中的控件属性,因为这样做会导致一个自动的Form_load事件发生。Load Form_load事件在窗口加载到内存的时候被触发。通过显式的Load语句,在窗口未执行load事件时调用show方法,或者在一行代码中涉及到任何未loaded的窗口的属性,都可以触发form的load事件。Activate就如我们之前描述的情况,Activate事件在窗口每次称为活动窗口时都被调用,只要焦点在程序的窗体之间移动了。但是如果焦点从这个应用程序之外的窗体中转移过来,这个事件则不会发生。
可以简单理解为 initialize 初始化(初始化即创建过而没有释放下次就不执行) load 加载 show 显示 activate 激活
Initialize 这个事件只有在应用程序第一次创建窗口实例的时候才触发 ********************************************* 子窗体关闭后,实例还在不用mdi窗体,用form1调用form2就可以看出 form1 Private Sub Command1_Click() Form2.Show End SubPrivate Sub Command2_Click() Set Form2 = Nothing End Subform2Private Sub Form_Activate() Debug.Print "Activate2" End SubPrivate Sub Form_Initialize() Debug.Print "initialize2" End SubPrivate Sub Form_Load() Debug.Print "load2" End Sub你点击command2和不点击效果不一样
看的不能仔细点吗?8楼已经贴给你了Private Sub Command2_Click() Set Form2 = Nothing End Sub
8楼的代码lz难道没有试验?8楼已经告诉你了 你点击command2和不点击效果不一样
'从对象的角度来理解:下面可能会以 FORM 为例说明;Initialize:'初始化类,只有且仅当这个类的实例被创建时发生此事件;Load:'加载窗体内所有其他对象及窗体本身时发生,此事件发生的前提是对象的实例已经被创建;Activate:'窗体成为活动窗口时,也就是已经显示在屏幕上的时候,此事件发生;Show:'是用于显示窗体的方法;
Debug.Print "Activate"
End SubPrivate Sub Form_Initialize()
Debug.Print "initialize"
End SubPrivate Sub Form_Load()
Debug.Print "load"
End Sub结果
initialize
load
Activate
这个事件只有在应用程序第一次创建窗口实例的时候才触发。在一个有启动窗口的应用程序中,发生的第一个事件是Initialize事件。,如果,例如下面的语句被执行: Set x = New Form1
需 要在Form_load事件加载之前完成的任务可以(在Visual Basic4.0)在Form_Initialize语句中执行。任何在窗口创建后只需执行一次的语句可以放在这里。但是你应该小心这里不应该涉及到窗口 中的控件属性,因为这样做会导致一个自动的Form_load事件发生。Load
Form_load事件在窗口加载到内存的时候被触发。通过显式的Load语句,在窗口未执行load事件时调用show方法,或者在一行代码中涉及到任何未loaded的窗口的属性,都可以触发form的load事件。Activate就如我们之前描述的情况,Activate事件在窗口每次称为活动窗口时都被调用,只要焦点在程序的窗体之间移动了。但是如果焦点从这个应用程序之外的窗体中转移过来,这个事件则不会发生。
在MDI程序运行的过程中,这个子窗体只有在第一次打开时执行Form_Initialize,而load 和 Activate 是每次打开都执行。也就是说,当我运行了这个MDI程序后,比如反反复复打开和关闭这个子窗体10遍,load 和 Activate各执行10遍,而这个子窗体的Initialize只执行一遍,就是在这个了窗体第一次条开的时候。这是为什么呢?
initialize 初始化(初始化即创建过而没有释放下次就不执行)
load 加载
show 显示
activate 激活
Initialize
这个事件只有在应用程序第一次创建窗口实例的时候才触发
*********************************************
子窗体关闭后,实例还在不用mdi窗体,用form1调用form2就可以看出
form1
Private Sub Command1_Click()
Form2.Show
End SubPrivate Sub Command2_Click()
Set Form2 = Nothing
End Subform2Private Sub Form_Activate()
Debug.Print "Activate2"
End SubPrivate Sub Form_Initialize()
Debug.Print "initialize2"
End SubPrivate Sub Form_Load()
Debug.Print "load2"
End Sub你点击command2和不点击效果不一样
看的不能仔细点吗?8楼已经贴给你了Private Sub Command2_Click()
Set Form2 = Nothing
End Sub
你点击command2和不点击效果不一样