1

いくつかの多目的の子フォームを持つ MDI WinForms 環境では、これらのフォームのインスタンスを 1 つだけ開いたままにしておく簡単な方法は、そのためにシングルトンを実装することだと誰もが言います。いくつかの検索の後、私はこのアプローチを見つけました(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 に答える