在提示后单击“关闭”按钮时终止程序 - Visual Basic

时间:2016-02-23 13:50:15

标签: vb.net visual-studio

我的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. CloseForm2.Close。这使得一旦关闭程序的活动表格就可以关闭两个表格。但同样,这是一个问题。单击关闭按钮后,消息框将填满屏幕,而不是收听我的命令。有人为此得到了解决方案吗?

1 个答案:

答案 0 :(得分:0)

所以..

如果用户在echo getValueByPath($person,'contact->email'); // Returns the value of that object path 中单击“关闭”,则程序应终止,不显示消息框。

如果用户在Form1Form2Form3中关闭,则当用户点击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