Events VB6关闭父窗体时,卸载查询加载或终止子窗体中的事件
我以前问过这个问题,但我一定不是很清楚,因为据我所知答案并不正确。。又来了 我有一个VB6应用程序。。它有打开窗体和对话框的主菜单(我不认为是MDI) 我想在应用程序关闭时保存任何打开的窗体或对话框的位置,以便下次打开应用程序时,这些位置将恢复 我希望当我关闭应用程序时,QueryLoad、unload、terminate中的任何一个都会在“子”窗口或对话框中触发,我可以保存它们的位置。。但似乎什么也没有发生 我已经在上述所有事件上设置了断点,但是当我关闭应用程序时,没有任何结果 VB6不是我通常的工作。。所以我可能想得太多了 有没有一种方法可以在VB6中实现这一点Events VB6关闭父窗体时,卸载查询加载或终止子窗体中的事件,events,vb6,terminate,Events,Vb6,Terminate,我以前问过这个问题,但我一定不是很清楚,因为据我所知答案并不正确。。又来了 我有一个VB6应用程序。。它有打开窗体和对话框的主菜单(我不认为是MDI) 我想在应用程序关闭时保存任何打开的窗体或对话框的位置,以便下次打开应用程序时,这些位置将恢复 我希望当我关闭应用程序时,QueryLoad、unload、terminate中的任何一个都会在“子”窗口或对话框中触发,我可以保存它们的位置。。但似乎什么也没有发生 我已经在上述所有事件上设置了断点,但是当我关闭应用程序时,没有任何结果 VB6不是我通
编辑:因此,如果我单击右上角的闭合十字,我似乎会“结束”应用程序。在VB6中是否有方法编辑此行为,以便我可以发起优雅的关闭?所有3个事件都会触发,但终止事件可能不会在您期望的时候触发 创建一个包含1个MDI表单、1个MDI子表单和1个普通表单的测试项目,并添加以下代码: MDI表单:
'MDI form : name=MDIForm1
Option Explicit
Private Sub MDIForm_Click()
End
End Sub
Private Sub MDIForm_Load()
Form1.Show
Form2.Show vbModeless, Me
WindowState = vbMaximized
End Sub
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "MDI form QueryUnload event"
End Sub
Private Sub MDIForm_Terminate()
MsgBox "MDI form Terminate event"
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
MsgBox "MDI form Unload event"
End Sub
'1 form: name=Form1 MDIChild=true
Option Explicit
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "MDI child QueryUnload event"
End Sub
Private Sub Form_Terminate()
MsgBox "MDI child Terminate event"
End Sub
Private Sub Form_Unload(Cancel As Integer)
MsgBox "MDI child Unload event"
End Sub
'1 form: name=Form2
Option Explicit
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "Form2 QueryUnload event"
End Sub
Private Sub Form_Terminate()
MsgBox "Form2 Terminate event"
End Sub
Private Sub Form_Unload(Cancel As Integer)
MsgBox "Form2 Unload event"
End Sub
MDI子项:
'MDI form : name=MDIForm1
Option Explicit
Private Sub MDIForm_Click()
End
End Sub
Private Sub MDIForm_Load()
Form1.Show
Form2.Show vbModeless, Me
WindowState = vbMaximized
End Sub
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "MDI form QueryUnload event"
End Sub
Private Sub MDIForm_Terminate()
MsgBox "MDI form Terminate event"
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
MsgBox "MDI form Unload event"
End Sub
'1 form: name=Form1 MDIChild=true
Option Explicit
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "MDI child QueryUnload event"
End Sub
Private Sub Form_Terminate()
MsgBox "MDI child Terminate event"
End Sub
Private Sub Form_Unload(Cancel As Integer)
MsgBox "MDI child Unload event"
End Sub
'1 form: name=Form2
Option Explicit
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "Form2 QueryUnload event"
End Sub
Private Sub Form_Terminate()
MsgBox "Form2 Terminate event"
End Sub
Private Sub Form_Unload(Cancel As Integer)
MsgBox "Form2 Unload event"
End Sub
范式:
'MDI form : name=MDIForm1
Option Explicit
Private Sub MDIForm_Click()
End
End Sub
Private Sub MDIForm_Load()
Form1.Show
Form2.Show vbModeless, Me
WindowState = vbMaximized
End Sub
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "MDI form QueryUnload event"
End Sub
Private Sub MDIForm_Terminate()
MsgBox "MDI form Terminate event"
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
MsgBox "MDI form Unload event"
End Sub
'1 form: name=Form1 MDIChild=true
Option Explicit
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "MDI child QueryUnload event"
End Sub
Private Sub Form_Terminate()
MsgBox "MDI child Terminate event"
End Sub
Private Sub Form_Unload(Cancel As Integer)
MsgBox "MDI child Unload event"
End Sub
'1 form: name=Form2
Option Explicit
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "Form2 QueryUnload event"
End Sub
Private Sub Form_Terminate()
MsgBox "Form2 Terminate event"
End Sub
Private Sub Form_Unload(Cancel As Integer)
MsgBox "Form2 Unload event"
End Sub
您将看到QueryLoad和Unload事件被激发(按此顺序),但Terminate事件在您关闭MDI表单时被激发
当您单击MDI表单的后台时,将调用End
,并且不会触发任何事件“子”表单不会获取通常的事件。请注意,在Form\u QueryUnload
上,UnloadMode
参数是vbFormOwner
“子”表单与解释所有者表单一起显示,如下所示:
'--- using global references
Form2.Show vbModal, Form1
Form3.Show , Form1 '--- Form3 is modeless
'--- using instances
With New Form2
.Show vbModal, oOwnerForm
End With
With New Form3
.Show , oOwnerForm
End With
如何关闭应用程序?是否在任何地方使用“结束”按钮?保存窗口位置时,请记住,无论窗体是最大化、最小化还是正常,都需要保存。只有在正常情况下,才应保存该位置。这可能很棘手。我通常在调整大小事件中保存值,而不是在关闭时保存,以确保获得“良好”值。呃。。“结束”。。这就是Hrqls单击MDI父项的含义吗。。在我的语言中,右上角的标准闭合十字。那样的话,我就必须这样做。。这就是为什么我没有被解雇。