我要向其添加主题的许多自定义控件(某些自TextBox,Button,ComboBox继承)。因此,我要做的第一件事是创建一个ThemeManager
类:
public class ThemeManager
{
private static ThemeManager instance;
private ITheme theme;
public ITheme Theme
{
get => theme; set => theme = value;
}
private ThemeManager()
{
this.theme = new DefaultTheme();
}
public static ThemeManager Instance => instance ?? (instance = new ThemeManager());
}
Theme
类是一个简单的类,对于控件的各个部分,颜色具有许多不同的属性。在我的自定义控件(例如,从TextBox继承)中,添加了以下内容:
[Browsable(false)]
public ThemeManager ThemeManager => ThemeManager.Instance;
public CustomTextBox()
: base()
{
SetStyle(ControlStyles.UserPaint, true);
}
然后我覆盖OnPaint
和OnPaintBackground
进行绘制。当应用运行时,上面的方法可以正常工作。
但是,在设计器中设计表单时,我也想查看主题。有可能这样做吗?我是否需要创建Component
并将其添加到控件中以便仅在设计模式下使用?