簡體   English   中英

VB6關閉父窗體時,請在子窗體中卸載queryunload或終止事件

[英]VB6 When closing the Parent form do unload queryunload or terminate events fire in Child Forms

我之前已經問過這個問題,但我一定不是很清楚,因為據我所知,答案原來是不正確的。

我有一個VB6應用程序..它具有打開窗體和對話框的主菜單(不是我不認為的MDI)

我想在應用程序關閉時保存所有打開的窗體或對話框的位置,以便下次我打開應用程序時,位置將被恢復。

我希望當我關閉應用程序時,任何queryUnload,unload,terminate都會在“子”窗口或對話框中觸發,並且我可以保存它們的位置..但似乎沒有觸發。

我在上述所有事件上都設置了斷點,但是當我關閉該應用程序時,什么也沒有遇到。

VB6不是我平常的演出..所以我可能在想太多.net ..

有沒有辦法可以在VB6中完成..

編輯:所以,如果我單擊右上角的關閉叉號,則“結束”應用程序。 VB6中是否有一種方法可以編輯此行為,以便引起正常關閉?

這3個事件均會觸發,但您期望時可能不會觸發Terminate事件。

創建一個由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

MDI子:

'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

您將看到QueryUnload和Unload事件被觸發(按此順序),但是當您關閉MDI表單時,將觸發Terminate事件。

當您單擊MDI表單的背景時,將調用End並且不會觸發任何事件

“兒童”表格確實會收到通常的事件。 請注意,在Form_QueryUnloadUnloadMode參數為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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM