两个窗体:
form1 中有一个按扭,单击按牛 显示form2,关闭form1
sub command1_clik()
form2.show
unload me
end subform2中form2_load()
********
此处为一系列的运算
最后根据flag的值进行判断 若flag="err"则显示form1,关闭form2,若flag="ok",显示fom2窗体
if flag="err" then
form1.show
unload me
endif
end sub在这里系统提示我,对象已卸载,请问改如何做?????????
form1 中有一个按扭,单击按牛 显示form2,关闭form1
sub command1_clik()
form2.show
unload me
end subform2中form2_load()
********
此处为一系列的运算
最后根据flag的值进行判断 若flag="err"则显示form1,关闭form2,若flag="ok",显示fom2窗体
if flag="err" then
form1.show
unload me
endif
end sub在这里系统提示我,对象已卸载,请问改如何做?????????
sub command1_clik()unload me
form2.show
end subform2中form2_load()
if flag="err" thenunload me
form1.showendif
end sub
form1中
sub command1_clik()
form2.show
form1.hide (我想unload me是将窗体卸载了,系统当然提你对象被卸载,用hide是将form1隐藏起来。)
end subform2中
if flag="err" then
form1.show
form2.hide
endif
end sub
如果是这样那就:form1中
sub command1_clik()
form2.show
form1.hide (我想unload me是将窗体卸载了,系统当然提你对象被卸载,用hide是将form1
隐藏起来。)
end sub
form2中
if flag="err" then
form1.show
unload.me
endif
end sub
你可以试一试,下面的代码照样运行
Private Sub Form_Activate()
加入代码
Private Sub Timer1_Timer()
If flag = "err" Then
Unload Me
Form1.Show
End If
End Sub
flag = "err"
Unload Me
Load Form2 '或者 Form2.Show
End SubForm2的代码Option ExplicitPrivate Sub Timer1_Timer()
If flag = "err" Then
Unload Me
Form1.Show
End If
End Sub
比如:Option ExplicitPrivate Sub Form_Load()
Unload Me
MsgBox "还在运行"
End Sub
这样就不行了
Option ExplicitPrivate Sub Form_Load()
Unload Me
Exit Sub
MsgBox "还在运行"
End Sub
不必弄得那么复杂吧。100毫秒过了不会再form2吗????没试过。
我的那些代码已经运行了,其实不麻烦
就是把Form2中Load的代码移到了 定时器 控件中
load 此事件是在一个窗体被装载时发生
MSDN
Activate、Deactivate 事件
Activate -当一个对象成为活动窗口时发生。
Deactivate -当一个对象不再是活动窗口时发生。
语法Private Sub object_Activate( )Private Sub object_Deactivate( )object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。说明一个对象可以通过诸如单击它,或使用代码中的 Show 或 SetFocus 方法之类的用户操作而变成活动的。Activate 事件仅当一个对象可见时才发生。例如,除非使用 Show 方法或将窗体的 Visible 属性设置为 True,否则,一个用 Load 语句加载的窗体是不可见的。Activate 和 Deactivate 事件仅当焦点在一个应用程序内移动时才发生。在另一个应用程序中将焦点移向或移离一个对象时,不会触发任何一个事件。当一个对象卸载时,不会发生 Deactivate 事件。Activate 事件在 GotFocus 事件之前发生,LostFocus 事件在 Deactivate 事件之前发生。对 MDI 子窗体来说,这些事件仅当焦点从一个子窗体改变到另一个子窗体时才会发生。例如,在一个带有两个子窗体的 MDIForm 对象中,当焦点在子窗体之间移动时,它们能接收这些事件。然而,当焦点在一个 MDI 子窗体和一个非 MDI 子窗体之间移动时,父 MDIForm 将接收 Activate 和 Deactivate 事件。如果一个由 Visual Basic 建立的 .exe 文件显示一个对话框,此对话框也是由建立在 Visual Basic 中的一个 .dll 文件所创建的,那么.exe 文件的窗体将获得 Deactivate 和 LostFocus 事件。这可能是不期望的,因为下列情况下不应获得 Deactivate 事件: 如果对象是一个过程之外的部件。
如果对象不是用 Visual Basic 编写的。
在开发环境中调用一个 Visual Basic 建立中的 DLL 时。
Load 事件
此事件是在一个窗体被装载时发生。当使用 Load 语句启动应用程序,或引用未装载的窗体属性或控件时,此事件发生。语法Private Sub Form_Load( )Private Sub MDIForm_Load( )说明通常,Load 事件过程用来包含一个窗体的启动代码—例如,指定控件缺省设置值,指明将要装入 ComboBox 或 ListBox 控件的内容,以及初始窗体级变量等。Load 事件是在 Intialize 事件之后发生。当在代码中引用一个未装载窗体的属性时,该窗体自动被装载但不自动成为可视窗体,除非 MDIChild 属性被设置为 True。如果一个 MDIForm 对象未被装载而一个 MDI 子窗体却被装载,则 MDIForm 和该子窗体都自动被装载并且都将成为可视的窗体。除非使用 Show 方法或将 Visible 属性设置为 True,否则其它窗体都不能显示出来。MDIForm Load 事件中的下列代码可自动装载一个 MDI 子窗体(假设 Form1 本身的 MDIChild 属性被设置为 True):Dim NewForm As New Form1
NewForm.Caption = "New Form" '.‘按引用装载窗体’。由于所有子窗体在装载时都可视,对 Caption 属性的引用将装载该窗体并使其可视。注意 当为诸如 Activate,GotFocus,Paint 和 Resize 等相关事件创建过程时,要确保它们的操作不冲突,而且它们也不会导致循环的事件。