0

我正在编写一个名为FormThemeVB.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)

想知道实现这一点的最佳方法是什么?考虑在构造函数中使用EnumandSelect 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

在我向前迈进之前,是否有更标准或“更好”的方式来做到这一点?

4

1 回答 1

1

看起来是一个很好的方法。

您总是可以在字典中预加载所有颜色方案

Dim colorSchemeList As Dictionnary(Of ColorScheme, FormTheme)

加载在静态构造函数中,你的 New 看起来像

Public Sub New(ByVal scheme as ColorScheme)
    New(colorSchemeList(scheme))
End Sub
于 2013-05-03T16:55:43.477 回答