1

在具有多个多用途子窗体的 MDI WinForms 环境中,每个人都说要同时打开这些窗体的一个实例,最简单的方法是为此使用 Singleton 实现。经过一番搜索,我发现了这种方法(VB .NET 语言):

Public Class FormSingleton(Of TForm As {Form, New})
    Private Shared _instance As TForm

    Public Shared ReadOnly Property Form() As TForm
        Get
            If _instance Is Nothing OrElse _instance.IsDisposed Then
                _instance = New TForm
            End If

            Return _instance
        End Get
    End Property

    Public Shared Sub Show()
        'Ensure the form is visible and has focus.
        With Form
            .Show()
            .Activate()
        End With
    End Sub

End Class

当然,显示表单的代码是:

FormSingleton(Of MyForm).Show()

现在我的问题是如何在表单实际显示之前将一些信息发送到“Singleton”表单。必须发送的信息类型因一种形式而异。

谢谢

4

1 回答 1

0

您可以向您的班级添加FormSingleton一个方法,例如...

Public Shared Sub AddFacts(ByVal fact_object As Object)
    With Form
        .AddFacts(fact_object)
    End With
End Sub

然后AddFacts为您的每个表格添加一个合适的。考虑让您的表单实现接口并将 AddFacts、Show 和 Activate 方法作为该接口的一部分可能是值得的。这样,您可以确保在编译时表单适合在您的单例中使用。

于 2013-01-23T11:11:33.260 回答