vb中Load事件和Activate事件区别(结合例子)
PrivateSubForm_load()Dimi%Fori=10To1Step-1PrintiNextiEndSub运行窗体无反应,换成activate后才显示,请说明...
Private Sub Form_load()
Dim i%
For i = 10 To 1 Step -1
Print i
Next i
End Sub
运行窗体无反应,换成activate后才显示,请说明 展开
Dim i%
For i = 10 To 1 Step -1
Print i
Next i
End Sub
运行窗体无反应,换成activate后才显示,请说明 展开
5个回答
展开全部
Load事件:在一个窗体被装载时发生。当使用 Load 语句启动应用程序,或引用未装载的窗体属性或控件时,此事件发生。通常,Load 事件过程用来包含一个窗体的启动代码。Load 事件是在 Intialize 事件之后发生。
例如,指定控件缺省设置值,指明将要装入 ComboBox 或 ListBox 控件的内容,以及初始窗体级变量等。
Activate :当一个对象成为活动窗口时发生。一个对象可以通过诸如单击它,或使用代码中的 Show 或 SetFocus 方法之类的用户操作而变成活动的。Activate 事件仅当一个对象可见时才发生。例如,除非使用 Show 方法或将窗体的 Visible 属性设置为 True,否则,一个用 Load 语句加载的窗体是不可见的。Activate 事件仅当焦点在一个应用程序内移动时才发生。在另一个应用程序中将焦点移向或移离一个对象时,不会触发任何一个事件。Activate 事件在 GotFocus 事件之前发生,LostFocus 事件在 Deactivate 事件之前发生。
例如,指定控件缺省设置值,指明将要装入 ComboBox 或 ListBox 控件的内容,以及初始窗体级变量等。
Activate :当一个对象成为活动窗口时发生。一个对象可以通过诸如单击它,或使用代码中的 Show 或 SetFocus 方法之类的用户操作而变成活动的。Activate 事件仅当一个对象可见时才发生。例如,除非使用 Show 方法或将窗体的 Visible 属性设置为 True,否则,一个用 Load 语句加载的窗体是不可见的。Activate 事件仅当焦点在一个应用程序内移动时才发生。在另一个应用程序中将焦点移向或移离一个对象时,不会触发任何一个事件。Activate 事件在 GotFocus 事件之前发生,LostFocus 事件在 Deactivate 事件之前发生。
展开全部
楼主:这个问题的实质其实不是Load 与 Activate的问题,
窗体的显示过程中,若还没加载,则先要加载,这会触发Load事件,如果加载完毕,从不显示状态到显示状态时,要触发Activate.
所以Load事件时,窗体还是不可见的,Print上去的东西会马上没掉。
Activate事件时,窗体已显示,Print上去的东西还可以看到。但时,如果你将窗口最小化(或被其它窗口遮住)后还原,上面的东西又会不见了。
因此,问题的关键不在于Load事件和Activate事件,而是窗体Print出来的东西是否维持住(用VB的话说:一个持久性的位图输出),你可以设置窗体的AutoRedraw属性为True,这样Print出来的东西就不会消失,不论在哪个事件里写上面的代码,都会显示。
窗体的显示过程中,若还没加载,则先要加载,这会触发Load事件,如果加载完毕,从不显示状态到显示状态时,要触发Activate.
所以Load事件时,窗体还是不可见的,Print上去的东西会马上没掉。
Activate事件时,窗体已显示,Print上去的东西还可以看到。但时,如果你将窗口最小化(或被其它窗口遮住)后还原,上面的东西又会不见了。
因此,问题的关键不在于Load事件和Activate事件,而是窗体Print出来的东西是否维持住(用VB的话说:一个持久性的位图输出),你可以设置窗体的AutoRedraw属性为True,这样Print出来的东西就不会消失,不论在哪个事件里写上面的代码,都会显示。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.load
是form加载执行
2.activate
是form触发执行,
从英文的意思里就能明白。
解释:
load
限于加载form时执行
activate
是如果你触发该form就执行!!比如你前面已经打开form1执行一次activate,当你隐藏窗口(me.hide)时,后面如果用到
form1.show
就还会执行activate。load就只执行一次(除非卸载窗口再加载)。
是form加载执行
2.activate
是form触发执行,
从英文的意思里就能明白。
解释:
load
限于加载form时执行
activate
是如果你触发该form就执行!!比如你前面已经打开form1执行一次activate,当你隐藏窗口(me.hide)时,后面如果用到
form1.show
就还会执行activate。load就只执行一次(除非卸载窗口再加载)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Form_load()
me.show'加上这个就可以了
Dim i%
For i = 10 To 1 Step -1
Print i
Next i
End Sub
在窗口未显示的时候,你的所有输出都无效,除非你对窗口设置了Autoredraw属性=true
me.show'加上这个就可以了
Dim i%
For i = 10 To 1 Step -1
Print i
Next i
End Sub
在窗口未显示的时候,你的所有输出都无效,除非你对窗口设置了Autoredraw属性=true
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Print要在load之后才有效。所以,你把print写在load里面是没用的!而activate是在load之后执行,所以print写在activate可以达到目的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询