0

我有一个项目,它由几种形式组成,并希望以某些我无法实现的模态规则打开它。

首先,这里是主窗体“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”或退出应用程序,其中非模态表单“Form11”上的模态表单“Form111”打开。

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

4

1 回答 1

1

首先,第一个块中按钮单击的代码可能不正确。如果表单被命名Form11Form12那就是它们的类名。他们应该像你一样被实例化Form111

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

至于你的问题,有一个对话框“块” "Form11" but not "Form1",答案是否定的。表单是Modal(您所谓的“阻塞”)或Modeless. 您可以告诉 Form111 保持领先,但它不会“阻止”任何其他表单。

您正在尝试做的事情表明,这些表单上的操作可能没有像他们需要的那样组织或计划好。

于 2013-10-15T12:43:55.250 回答