关于MDI窗体关闭的问题

ahljxwy 2010-09-28 11:32:13



问题描述:请看我发的图,我用的是MDI窗体,我想让主界面始终不能关闭,只有当系统整个退出时才能关闭主界面,MDI父窗体关闭时有以下代码:
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)

If Me.ActiveForm Is Nothing Then Exit Sub

gblnClose = False

Dim tempControl As Object
For Each tempControl In Forms
If tempControl.Caption <> "主界面" Then
Unload tempControl
If gblnClose = True Then Exit Sub
End If
Next

For Each tempControl In Forms

If tempControl.Caption = "主界面" Then
tempControl.Caption = ""
Unload tempControl
End If
Next

End Sub

我的意思是想关闭了所有子窗体后才能关闭主界面窗体,其中主界面窗体的关闭事件中有如下代码:
Private Sub Form_Unload(Cancel As Integer)
If Me.Caption = "主界面" Then
MsgBox "主界面不能关闭!", vbInformation, "提示"
Cancel = 1
End If

End Sub

销售单在关闭时有如下代码:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim inti As Integer

If tlbToolBar.Buttons("ADD").Value = tbrPressed Or tlbToolBar.Buttons("EDIT").Value = tbrPressed Then
inti = MsgBox("数据尚未保存,是否直接退出?", vbYesNoCancel + vbQuestion, "提示")
End If

Select Case inti
Case 6
Call tlbToolBar_ButtonClick(tlbToolBar.Buttons("SAVE"))

Case 7
Unload Me

Case 2
Cancel = 1
gblnClose = True
End Select

End Sub

现在的问题就是:关闭时如果销售单中有正在修改的数据还未保存的话出弹出提示,在提示窗中选择取消的请,gblnClose 已被设为True了,但MDI父窗体中的If gblnClose = True Then Exit Sub代码并没有实现我要的效果退出系统关闭过程,而是又跳出了一次提示窗,需要再点击一次取消按钮才能退出系统关闭过程,各位大虾有什么好的解决办法吗?先谢了!
...全文
145 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
panyong 2010-09-29
  • 打赏
  • 举报
回复
你在销售单的退出上用 UNLOAD ME 试试看
panyong 2010-09-29
  • 打赏
  • 举报
回复
UNLOAD ME 就能卸载窗体啊 不要用end
ahljxwy 2010-09-29
  • 打赏
  • 举报
回复
难道要录像一段?
ncluj 2010-09-29
  • 打赏
  • 举报
回复
我分析一下流程:
MDI主窗体关闭时,首先触发各子窗体的关闭,最后触发自己的关闭,
所以,楼主点击主窗体关闭时,系统先关闭其他子窗体,关闭顺序我还没研究过,按楼主的描述,应该是先触发了销售单窗体的关闭事件

于是对话框出来,选Cancel了,理论上应该再触发主窗体的关闭事件,弹出“主窗体不能关闭”,再然后执行MDI窗体的关闭,即楼主自己的遍历各窗体,逐一关闭,此时
gblnClose = False,再次变成了False.然后再关销售单,这次没Cancle,选了保存,然后正常结束。


我有点晕。。
ncluj 2010-09-29
  • 打赏
  • 举报
回复
楼主所说的“关闭时”是点击MDI窗体的关闭,还是销售单窗体的关闭呢?
ahljxwy 2010-09-29
  • 打赏
  • 举报
回复
希望今天有人回复
ahljxwy 2010-09-28
  • 打赏
  • 举报
回复
来个人吧!
ahljxwy 2010-09-28
  • 打赏
  • 举报
回复
走了一次他又路过一次
wunghong33 2010-09-28
  • 打赏
  • 举报
回复
你这个程序好像不复杂,你可以用单步(F8)运行一下,看程序走到那里出错了
ahljxwy 2010-09-28
  • 打赏
  • 举报
回复
不能沉

7,763

社区成员

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

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