打开表单作为ShowDialog但关闭启动表单

时间:2013-11-21 22:47:17

标签: vb.net winforms

除了隐藏然后稍后关闭隐藏表单之外,还有什么方法可以执行以下操作吗?

Mainform打开SecondForm作为show对话框,我需要在关闭SecondForm的同时从SecondForm打开ThirdForm,同时保持第三个形式在MainForm上扮演“showdialog”?

3 个答案:

答案 0 :(得分:2)

当您显示SecondForm()时,将MainForm()作为所有者传递给ShowDialog():

Public Class MainForm

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim sf As New SecondForm
        If sf.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
            ' ... do some processing in here ...
        End If
    End Sub

End Class

现在,在SecondForm()中,您可以将ThirdForm()的所有者设置为SecondForm()的所有者:

Public Class SecondForm

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.Hide()
        Dim tf As New ThirdForm
        tf.ShowDialog(Me.Owner)
        Me.DialogResult = Windows.Forms.DialogResult.OK
    End Sub

End Class

答案 1 :(得分:1)

只要第二个表单返回对话框结果,您就可以从主表单中打开第三个表单

您也可能希望查看MDI,这可以让您更好地控制用户可以做什么和不能做什么。

答案 2 :(得分:0)

在尝试Idle_mind建议之后,它仍然让我在表单之间来回传递问题,不断将它们显示为.showdialog。我解决了我的问题就像tinstaafl建议的那样。我希望在提出不同的方法之前,我会在几个小时之前得到他的信息。

当我关闭每个表单时,我在主窗体中设置一个布尔标志。然后我调用主窗体中的子窗口,将主窗体中的下一个窗体显示为showdialog。我使用触发逻辑的标志im加载是否绑定数据表中的数据,以便我可以编辑它。

抱歉,我知道所有这些表格都让人感到困惑。总结一下,关闭对话框表单(me.close),设置标志,这样一旦showdialog代码满足,调用代码就知道该怎么做。