Vb.net 表单在单击后不隐藏

Vb.net 表单在单击后不隐藏,vb.net,winforms,Vb.net,Winforms,解决了我的最后一个问题。但是今天我遇到了麻烦 帮助我在这段代码中找到一些解决方法。当我再次单击标记时,它假定隐藏可见的表单实例,但是相反,它创建了一个新的表单实例,正如我所看到的,它们应该做我提到的两件事。哈哈 For Each m In mList If item.ToolTipText = m Then Dim f As New Form2 With f If .V

解决了我的最后一个问题。但是今天我遇到了麻烦

帮助我在这段代码中找到一些解决方法。当我再次单击标记时,它假定
隐藏
可见的
表单实例,但是相反,它创建了一个新的表单实例,正如我所看到的,它们应该做我提到的两件事。哈哈

For Each m In mList
            If item.ToolTipText = m Then
                Dim f As New Form2
                With f
                    If .Visible = True Then
                        .Hide()
                    Else
                        .Show()
                        Dim p As New Point
                        p = item.LocalPosition + New Point(20, -240)
                        .Location = p
                        .Text = m
                    End If
                End With
                Exit Sub
            End If
        Next
我的目标是在再次单击打开的实例后
隐藏它。谢谢你的帮助


更新我在每次单击时都添加了
Dim f作为新表单2
,因为我有许多标记必须同时显示,这取决于用户希望看到的表单数量。如果我在global上使用该声明,它一次只能生成一个。因此,每次单击我都需要创建一个新实例,如果我再次单击,
可见的
实例将
隐藏

您实际上每次都在代码中创建一个新表单:

Dim f As New Form2

您需要引用表单的现有实例,但从代码中不清楚存储在何处。

执行了另一种解决方法

form2
关闭事件中添加了
Me.Hide()。。我真的不知道它是否隐藏了什么

但是,当我再次单击标记时,它不会给我一个
dispose
错误

For Each m In mList
            If item.ToolTipText = m Then
                Dim f As New Form2
                With f
                    .Show()
                    Dim p As New Point
                    p = item.LocalPosition + New Point(20, -240)
                    .Location = p
                    .Text = m
                End With
                Exit Sub
            End If
        Next

我已经试过了,并把它加在了上面。但是如果我这样做,我一次只能显示一个表单。。这不是我的选项:)我将更新我的问题。单击表单中的任何位置时是否要隐藏表单?好的,让我们看看代码是否满足需要。最好在单击X后隐藏表单。。。所以它不会给我
dispose
error.)如果在单击表单时需要隐藏表单,则应处理表单的“单击”事件(在表单代码中)。如果我这样做,则
表单
将隐藏。。但是如果我单击标记,它将创建另一个,隐藏,创建,隐藏,创建。。应用程序的负载很大:(