Вы сражаетесь с дизайнером для TLP.Это пользовательский, как вы можете ясно увидеть, как он ведет себя в режиме дизайна.Использование метода InitLayout () для инициализации TLP некорректно, слишком поздно.Вместо этого вы должны сделать это в конструкторе.
Но это все равно не даст вам того, что вы хотите, дизайнер TLP жестко кодирует количество строк и столбцов, когда он инициализируется в 2x2.И он не может обработать код, изменяющий его во время разработки (как вы сделали в InitLayout), нет событий для прослушивания.Вам придется отказаться от этого дизайнера.
Все должно быть в порядке, так как вы уже инициализировали TLP так, как вы этого хотите.Используйте атрибут [Designer] для возврата к ControlDesigner.Если это сложно для вашего контроля, то вам придется создать свой собственный дизайнер.Используйте Reflector, чтобы взглянуть на внутренний класс TableLayoutPanelDesigner, чтобы начать с этого.Помните, что это не простой конструктор.
Эти присваивания свойств отображаются в InitializeComponent, поскольку атрибут [DefaultValue] в этих свойствах объявляет другое значение по умолчанию.Вы можете исправить это, добавив в свой класс частный метод ShouldSerializeRowCount (и ColumnCount).Верните false, чтобы предотвратить сериализацию свойства.