Ищем событие после создания конструктора элемента управления

#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();
}