送分100分:Activate、initialize、load、show 四者的执行顺序以及Activate、initialize、load三者的区别

zhouwtmm 2010-12-30 06:30:07
送分100分:Activate、initialize、load、show 四者的执行顺序以及Activate、initialize、load三者的区别
...全文
591 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahljxwy 2010-12-31
  • 打赏
  • 举报
回复
我来补充一点:当按重Shift键时Activate是不会被执行的
蓝海 2010-12-31
  • 打赏
  • 举报
回复
'从对象的角度来理解:下面可能会以 FORM 为例说明;

Initialize:'初始化类,只有且仅当这个类的实例被创建时发生此事件;

Load:'加载窗体内所有其他对象及窗体本身时发生,此事件发生的前提是对象的实例已经被创建;

Activate:'窗体成为活动窗口时,也就是已经显示在屏幕上的时候,此事件发生;

Show:'是用于显示窗体的方法;
布衣散人 2010-12-31
  • 打赏
  • 举报
回复
8楼的代码lz难道没有试验?

8楼已经告诉你了
你点击command2和不点击效果不一样
布衣散人 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhouwtmm 的回复:]
引用 8 楼 jjhhgg1111 的回复:
引用 6 楼 zhouwtmm 的回复:
我发现在一个MDI程序中,反复5次打开一个固定的子窗体时,initialize只在这个子窗体第一次打开时执行,而Activate、load每次打开时都执行。

为什么initialize只执行一次呢?


Initialize
这个事件只有在应用程序第一次创建窗口实例的时候才触发
******……
[/Quote]

看的不能仔细点吗?8楼已经贴给你了

Private Sub Command2_Click()
Set Form2 = Nothing
End Sub


wwhunter1214 2010-12-31
  • 打赏
  • 举报
回复
现在清楚了点三者之间的区别。。。

学习了
zhouwtmm 2010-12-31
  • 打赏
  • 举报
回复
老马,象你这样的大侠,一定要指点指点呀。

zhouwtmm 2010-12-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jjhhgg1111 的回复:]
引用 6 楼 zhouwtmm 的回复:
我发现在一个MDI程序中,反复5次打开一个固定的子窗体时,initialize只在这个子窗体第一次打开时执行,而Activate、load每次打开时都执行。

为什么initialize只执行一次呢?


Initialize
这个事件只有在应用程序第一次创建窗口实例的时候才触发
******************************……
[/Quote]

如何消除这个实例。
贝隆 2010-12-30
  • 打赏
  • 举报
回复
查阅MSDN吧
布衣散人 2010-12-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhouwtmm 的回复:]
我发现在一个MDI程序中,反复5次打开一个固定的子窗体时,initialize只在这个子窗体第一次打开时执行,而Activate、load每次打开时都执行。

为什么initialize只执行一次呢?
[/Quote]

Initialize
这个事件只有在应用程序第一次创建窗口实例的时候才触发
*********************************************
子窗体关闭后,实例还在

不用mdi窗体,用form1调用form2就可以看出
form1
Private Sub Command1_Click()
Form2.Show
End Sub

Private Sub Command2_Click()
Set Form2 = Nothing
End Sub


form2

Private Sub Form_Activate()
Debug.Print "Activate2"
End Sub

Private Sub Form_Initialize()
Debug.Print "initialize2"
End Sub

Private Sub Form_Load()
Debug.Print "load2"
End Sub


你点击command2和不点击效果不一样
Dision LI 2010-12-30
  • 打赏
  • 举报
回复
可以简单理解为
initialize 初始化(初始化即创建过而没有释放下次就不执行)
load 加载
show 显示
activate 激活
zhouwtmm 2010-12-30
  • 打赏
  • 举报
回复
我发现在一个MDI程序中,反复5次打开一个固定的子窗体时,initialize只在这个子窗体第一次打开时执行,而Activate、load每次打开时都执行。

为什么initialize只执行一次呢?
zhouwtmm 2010-12-30
  • 打赏
  • 举报
回复
我的MDI程序中,只有一个子窗体。
在MDI程序运行的过程中,这个子窗体只有在第一次打开时执行Form_Initialize,而load 和 Activate 是每次打开都执行。

也就是说,当我运行了这个MDI程序后,比如反反复复打开和关闭这个子窗体10遍,load 和 Activate各执行10遍,而这个子窗体的Initialize只执行一遍,就是在这个了窗体第一次条开的时候。

这是为什么呢?


布衣散人 2010-12-30
  • 打赏
  • 举报
回复
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事件在窗口每次称为活动窗口时都被调用,只要焦点在程序的窗体之间移动了。但是如果焦点从这个应用程序之外的窗体中转移过来,这个事件则不会发生。
布衣散人 2010-12-30
  • 打赏
  • 举报
回复
三个测试

Private Sub Form_Activate()
Debug.Print "Activate"
End Sub

Private Sub Form_Initialize()
Debug.Print "initialize"
End Sub

Private Sub Form_Load()
Debug.Print "load"
End Sub


结果
initialize
load
Activate
布衣散人 2010-12-30
  • 打赏
  • 举报
回复
Activate、initialize、load、是事件

show是方法

这个怎么比较
jiashie 2010-12-30
  • 打赏
  • 举报
回复
initialize load show activate

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧