首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何制作单实例表单

如何制作单实例表单
EN

Stack Overflow用户
提问于 2010-08-04 11:14:34
回答 2查看 4.7K关注 0票数 0

我有一个mdicontainer表单来传唤表单。我的问题是,当用户再次单击该表单的菜单时,它还会创建该表单的另一个实例。

我所做的就是声明一个带有公共变量的公共类,例如: Boolean isFormOneOpen = false。然后,每次formOne打开时,它首先检查我刚才声明的全局变量是否为假,如果是,则实例化一个formOne的对象,然后显示它。否则,什么也不做。非常静态,想象一下,如果我有许多表单,我必须为每个表单声明一个变量,以检查它是否已经打开。你能为我提供一个解决方案吗?也许是一个接受表单的方法?或者任何更聪明的方式来做这件事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-04 11:27:41

您不需要变量,您可以迭代MdiChildren集合来查看表单是否已经打开。例如:

代码语言:javascript
复制
Private Sub btnViewChild_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnViewChild.Click
    For Each child In Me.MdiChildren
        If TypeOf child Is Form2 Then
            child.WindowState = FormWindowState.Normal
            child.Focus()
            Exit sub
        End If
    Next
    Dim frm As New Form2
    frm.MdiParent = Me
    frm.Show()
End Sub

以VB.NET为中心的解决方案:

代码语言:javascript
复制
Private Sub btnViewChild_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnViewChild.Click
    Form2.MdiParent = Me
    Form2.WindowState = FormWindowState.Normal
    Form2.Show
End Sub
票数 2
EN

Stack Overflow用户

发布于 2010-08-04 11:18:06

声明一个窗体类型的变量,而不是布尔值。然后,只需确保变量不是Nothing,并调用它的.Open()方法。这有一个很好的副作用,如果现有的表单实例已经打开,还可以将其放在前面。

更好的是,在VB.Net 2.0及更高版本中,所有表单都有一个默认实例,其名称与其类型相同,因此您只需说FormName.Open()即可使用它。但是,我以前没有在mdi情况下尝试过这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3402322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档