我的WindowsFormApplication
中有两个表单,名为Form1和Form2。这个想法是当程序关闭时,它会显示一个对话框来确认它。
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form2.Show()
Me.Close()
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
MessageBox.Show("You are About to cancel the Setup.","Cancel Setup?",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1)
End Sub
End Class
直到这里,我的代码运行正常,但问题是当我单击Button1时,消息框似乎确认Form1的关闭。
我不希望这种情况发生,所以我尝试将Me.Close()
更改为Me.Hide
。我成功阻止了消息框出现,但后来又遇到了另一个问题。由于表格隐藏,它在后台保持活跃,我也不希望这种情况发生。
我在Form1_FormClosing
中添加的另一件事是Me. Close
和Form2.Close
。这使得一旦关闭程序的活动表格就可以关闭两个表格。但同样,这是一个问题。单击关闭按钮后,消息框将填满屏幕,而不是收听我的命令。有人为此得到了解决方案吗?
答案 0 :(得分:0)
所以..
如果用户在echo getValueByPath($person,'contact->email');
// Returns the value of that object path
中单击“关闭”,则程序应终止,不显示消息框。
如果用户在Form1
,Form2
或Form3
中关闭,则当用户点击Form4
中的Yes
时,该程序将会终止,或者会受到影响(特别是数据)。
这种方式的工作方式是当用户点击MessageBox
中的关闭时,程序终止时没有Form1
,如果用户点击其他MessageBox
中的关闭,A Forms
会出现询问您是否确定关闭本程序。如果用户单击是,则程序将终止,因为MessageBox
为是并且DialogResult
取消变为False并关闭Form1.Closing
(因为Closure类型在程序属性中设置为First Form Closes,这将终止程序)否则Form1
取消将变为True,这将阻止当前表格关闭并丢失任何数据。
此代码转到Form1.Closing
:
Form1
此代码转到Imports System.ComponentModel
Public Class Form1
Friend closeProgramAlreadyRequested As Boolean = False
Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
closeProgramAlreadyRequested = False
End Sub
End Class
&也适用于其他Form2
,但Forms
除外:
Form1