如何在显示表单之前将信息发送到单一实例表单



在具有多个多用途子窗体的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()

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

感谢

你可以添加到

你的类FormSingleton一个方法,例如...

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

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

最新更新