关于窗体右上角关闭按钮的实现问题

sire168 2008-10-21 11:54:21
我在窗体的 formclosing 事件中写了以下代码,想实现当要点击窗体右上角的关闭按钮时,弹出一个询问是否放弃保存的对话框!当点击是,放弃保存,否——保存修改!issave 是boolean 型,标识是否对修改了的数据进行了保存!
可我的代码出现了一下问题:
1. 当弹出对话框后,我选择 否 ,他会执行msgbox(“单击保存按钮进行保存”) ,然后接着本窗体也关闭了!怎么才能让点击保存按钮之后再保存?
2. 这段代码中出现了两个死循环,当弹出来是否放弃保存的对话框后,我选择 是(放弃保存),然后程序会不挺的执行msgbox(“测试1”),点击该消息框上的按钮,又会弹出 询问是否放弃保存的对话框,然后就是不停的执行这两句
3. 当issave=true 时,会不停的显示msgbox(“测试2”) 和 询问是否放弃对话框
请问,我该怎么改代码呢?是不是我选择的事件不对?
附代码:
Private Sub frmModify_instoresheet_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If issave = False Then
If MsgBox("数据已经修改,是否放弃? 是——放弃保存,否——保存,请确定!", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
MsgBox("测试1")
Me.Close()
Exit Sub
Else
MsgBox("请点击保存按钮,保存修改!")
Exit Sub
End If
Else
MsgBox("测试2")
Me.Close()
Exit Sub
End If
End Sub
...全文
174 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞翔中的猫 2008-10-21
  • 打赏
  • 举报
回复
修改后如下。造成循环的关键是 Me.Close() 会再次进入 FormClosing

若要取消窗体的关闭操作,请将传递给事件处理程序的 FormClosingEventArgs 的 Cancel 属性设置为 true。


Private Sub frmModify_instoresheet_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If issave = False Then
If MsgBox("数据已经修改,是否放弃? 是——放弃保存,否——保存,请确定!", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
MsgBox("测试1")
Exit Sub
Else
MsgBox("请点击保存按钮,保存修改!")
e.Cancel = True
Exit Sub
End If
Else
MsgBox("测试2")
Exit Sub
End If
End Sub
ZengHD 2008-10-21
  • 打赏
  • 举报
回复
使用e.Cancel=True取消退出

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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