У меня есть несколько пользовательских элементов управления (некоторые наследуются от 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
и добавлять его в элемент управления только в режиме разработки?