2013-05-03 39 views
0

我正在爲VB.NET表單應用程序編寫一個名爲FormTheme的主題類。它包含可在運行時應用以形成控件的配色方案信息。目前有三種方式實例化對象:VB.NET - 在一個類中提供預定義的創建設置

Public Sub New() 

使用默認系統顏色創建一個新主題。

Public Sub New(ByVal ForeColor As Color, _ 
         ByVal BackColor As Color, _ 
       ByVal BorderColor As Color ...) 

用提供的顏色創建一個新主題。

Public Sub New(ByRef ExistingTheme As FormTheme) 

通過對現有主題進行「深層複製」來創建新主題。

我想提供第四選項,用於創建基於預定義設置一個主題,例如:

Public Sub New(ByVal scheme As ColorScheme) 
'usage: Dim myTheme As New FormTheme(ColorScheme.Night) 

想知道什麼是執行此操作的最佳方法是什麼?使用視爲Enum,並在構造函數中主題Select Case聲明基於枚舉值,這肯定會工作:

Enum ColorScheme 
    Day 
    Night 
    City 
    Candy 
    ... 
End Enum 

Public Sub New(ByVal scheme as ColorScheme) 
    Select scheme 
    Case ColorScheme.Day 
     'Set colors 
    Case ColorScheme.Night 
     'Set colors 
    Case ColorScheme.City 
     'Set colors 
    ... 
    End Select 
End Sub 

之前,我銳意進取,是否有這樣做的更標準的或「更好」的方式?

+0

這似乎是一個非常有效的方法 – Steve 2013-05-03 09:21:09

回答

1

看起來像是一個很好的方法。

你總是可以下載所有的colorsccheme在dictionnary

Dim colorSchemeList As Dictionnary(Of ColorScheme, FormTheme) 

在靜態構造函數加載,並且他們在您的新會看起來像

Public Sub New(ByVal scheme as ColorScheme) 
    New(colorSchemeList(scheme)) 
End Sub 
+0

啊哈,該字典似乎是一個好主意,因爲它是ctor的巨大潛在長度,讓我停下來。 – Kai 2013-05-04 16:38:12

相關問題