模态和非模态形式的项目层面概念

时间:2013-10-15 08:46:04

标签: vb.net

我的项目包含多种形式,并希望以某些我无法实现的模态规则打开它。

首先,这里是主要形式“Form1”,然后是“Form11”和“Form111”,“Form12”和“form121”

从主窗体“Form1”开始,我只能以这样的形式开始“Form11”和“Form12”:

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Form11.Show()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Form12.Show()
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    Me.Close()
End Sub
End Class

在这种情况下,当显示“Form11”和“Form12”时,我可以通过按“Form1”上的Button4轻松退出应用程序,这将关闭所有表格。

现在,这是另一种形式,“Form111”,我通过单击“Form11”上的按钮以模态方式打开...

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim f As New Form111
    f.ShowDialog(Me)
    f = Nothing
End Sub

在这里,我对我的项目有一些误解或误解。

当“Form111”被打开时,我喜欢阻止“Form11”而不是“Form1”,我想(说)打开“Form2”或退出申请,其中模式形式“Form111”在非模式“Form11”上是打开。

是否可以通过描述的项目配置以及如何实现此类功能?

1 个答案:

答案 0 :(得分:1)

首先,第一个块中按钮点击的代码可能不正确。如果表单的名称为Form11Form12为其类名。它们应该像Form111一样实例化。

应用程序关闭的原因是因为该表单(Me)被设置为启动表单。如果/何时关闭,应用程序结束。您可以将应用程序更改为在项目属性中关闭最后一个表单时退出。

至于你的问题,要有一个对话框“阻止”"Form11" but not "Form1",答案是否定的。表单可以是Modal(您称之为“阻止”)或Modeless。您可以告诉Form111保持最佳状态,但它不会“阻止”任何其他形式。

您要做的事情表明,这些表单上的操作可能没有按照需要进行组织或计划。