#c# #winforms #constructor #controls #paint
#c# #winforms #конструктор #элементы управления #Краски
Вопрос:
Я создал Label
подкласс и мне нужно инициализировать несколько его свойств.
Некоторые я могу установить в конструкторе, но другие сбрасываются в коде конструктора формы, поэтому они должны быть установлены
- после того, как разработчик выполнил свою
InitializeComponent
- но перед запуском
Paint
события, для которого они нужны на месте.
Конечно, элемент управления должен быть самодостаточным, поэтому я ничего не могу добавить к коду формы.
Сейчас я использую обходной путь: я устанавливаю флаг, bool needsInit = true;
который я проверяю в Paint
событии. Если true, я вызываю doInit()
метод, который очищает флаг и выполняет инициализацию.
Это работает как для запущенной формы, так и для окна VS Designer .. но я чувствую наличие флага
Так, может быть, есть лучший способ сделать это без флагов? Или правильный путь?
Ответ №1:
Переопределите метод InitLayout.
protected override void InitLayout()
{
// do something here
base.InitLayout();
}