Свойство LayoutEngine доступно / создано (и кэшировано!) В (базовом) конструкторе элемента управления. Поэтому, если вы хотите использовать его, вам нужно создать подкласс Control или Panel и переопределить LayoutEngine.
Старайтесь избегать этого. Ваш компонент пользовательского интерфейса:
- это довольно просто? Не используйте его, вы будете стрелять себе в ногу.
- становится все сложнее? Попытайтесь решить эту проблему, составив несколько панелей, они довольно далеко у вас уйдут.
- может быть использован где-то еще? Старайтесь не использовать его, вы не получите правильные варианты использования макета (Padding / Margin / DockStyle / DockPadding / Anchors / AutoSize / AutoScroll / ...), и это будет беспорядок.
Может быть, если ваш компонент пользовательского интерфейса
- состоит из более внутренних элементов управления
- вы пытаетесь сделать что-то необычное и нуждаетесь в большем контроле
- ни один из внутренних элементов управления не должен быть невидимым / расширенным
- вы готовы потратить больше времени, чем на выяснение того, почему ваша TableLayoutPanel / FlowLayoutPanel / ... не размещается так, как вы хотите
... тогда, конечно, дай ему шанс! Вы можете получить некоторые быстрые результаты, но вы обнаружите, что переписываете метод макета больше, чем хотелось бы.