2013-01-23 84 views
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」表單。必須發送的信息的類型不同於一種形式。

THX

回答

0

你可以添加到您的FormSingleton類如方法...

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

,然後添加合適的AddFacts到您的每一個形式。看看您的表單實施interfaces,並將AddFacts,Show和Activate方法作爲該界面的一部分,這可能是值得的。這樣,你可以確保在編譯時該表單將適用於你的單身人士。

+0

除了爲每個表單編寫一個方法之外......挑戰是如何讓這個方法可以從基本Form類中使用,因爲AddFacts不是Form類的成員,並且發生錯誤,當然。 –

+0

@ValentinVucea嗯......好點。也許需要從Form派生MyForm,添加新的方法,然後FormSingleton(Of TForm {MyForm,New})。但是,這可能會有點像努力工作。 –

相關問題