从对话中中止对话
Aborting a dialog from within the dialog
有2种形式FA和FB。
FA是初始表单并发出 FB.ShowDialog() 以启动 FB。 FB 启动良好,但随后遇到问题并希望中止,将控制权返回给 FA。
我以为编码
Me.DialogResult = DialogResult.Cancel
Me.Close()
当 FB 遇到问题时就可以了。但是没有 - 代码继续运行,并且(大概是我的逻辑错误)一次又一次地遇到同样的问题。
我会解决逻辑问题,但是没有办法真正停止表单dead - 相当于 Me.AbortFormImmediately
?
两条评论都很棒,应该对提问者有帮助
我将以结束形式以两种方式发生的想法来扩展这个问题
按下后退按钮转到另一个表单
或者
标题栏关闭按钮(X)被选中
因为我厌倦了在每个表单上编写代码来管理这些流程
我在项目中添加了一个模块并添加了一个 Public Sub 来完成所有工作
只要稍加努力,就可以改进此模块代码
这是相关代码
模块
Module ModuleOne
Public Sub CloseTheForm()
Const message As String = "YES Go To Form One" + vbCrLf + vbNewLine + "NO CANCEL"
Const caption As String = "EXIT"
Dim result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If result = DialogResult.Yes Then
If frmThree.Visible Then
frmThree.Hide()
frmOne.Show()
End If
If frmFour.Visible Then
frmFour.Hide()
frmOne.Show()
End If
ElseIf result = DialogResult.No Then
If frmThree.Visible Then
frmThree.tbHaveTwo.Text = "CANCEL"
End If
If frmFour.Visible Then
frmFour.tbFive.Text = "CANCEL"
End If
End If
End Sub End Module
frmThree的相关代码
Private Sub btnBack_Click(sender As Object, e As EventArgs) Handles btnBack.Click
tbHaveOne.Clear()
CloseTheForm()
End Sub
Public Sub frmThree_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.Closing
CloseTheForm()
e.Cancel = True
End Sub
frmFour 的代码
Public Sub frmFor_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.Closing
CloseTheForm()
e.Cancel = True
End Sub
Private Sub btnBack_Click(sender As Object, e As EventArgs) Handles btnBack.Click
tbFour.Clear()
CloseTheForm()
End Sub
有2种形式FA和FB。
FA是初始表单并发出 FB.ShowDialog() 以启动 FB。 FB 启动良好,但随后遇到问题并希望中止,将控制权返回给 FA。
我以为编码
Me.DialogResult = DialogResult.Cancel
Me.Close()
当 FB 遇到问题时就可以了。但是没有 - 代码继续运行,并且(大概是我的逻辑错误)一次又一次地遇到同样的问题。
我会解决逻辑问题,但是没有办法真正停止表单dead - 相当于 Me.AbortFormImmediately
?
两条评论都很棒,应该对提问者有帮助
我将以结束形式以两种方式发生的想法来扩展这个问题
按下后退按钮转到另一个表单
或者
标题栏关闭按钮(X)被选中
因为我厌倦了在每个表单上编写代码来管理这些流程
我在项目中添加了一个模块并添加了一个 Public Sub 来完成所有工作
只要稍加努力,就可以改进此模块代码
这是相关代码
模块
Module ModuleOne
Public Sub CloseTheForm()
Const message As String = "YES Go To Form One" + vbCrLf + vbNewLine + "NO CANCEL"
Const caption As String = "EXIT"
Dim result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If result = DialogResult.Yes Then
If frmThree.Visible Then
frmThree.Hide()
frmOne.Show()
End If
If frmFour.Visible Then
frmFour.Hide()
frmOne.Show()
End If
ElseIf result = DialogResult.No Then
If frmThree.Visible Then
frmThree.tbHaveTwo.Text = "CANCEL"
End If
If frmFour.Visible Then
frmFour.tbFive.Text = "CANCEL"
End If
End If
End Sub End Module
frmThree的相关代码
Private Sub btnBack_Click(sender As Object, e As EventArgs) Handles btnBack.Click
tbHaveOne.Clear()
CloseTheForm()
End Sub
Public Sub frmThree_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.Closing
CloseTheForm()
e.Cancel = True
End Sub
frmFour 的代码
Public Sub frmFor_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.Closing
CloseTheForm()
e.Cancel = True
End Sub
Private Sub btnBack_Click(sender As Object, e As EventArgs) Handles btnBack.Click
tbFour.Clear()
CloseTheForm()
End Sub