Почему свойство "Размер" элемента управления устанавливается конструктором, когда элемент управления пристыкован к его родительскому элементу в C# Winforms?

Рассмотрим TabelLayoutPanel, Я добавляю это в Form1 с помощью дизайнера Visual Studio и установите Dock свойство к Fill, Хотя я установил размер с помощью Dock собственность, Size свойство также установлено в Form1.Designer.cs

this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel.Size = new System.Drawing.Size(1000, 800);

Это почему? Почему дизайнер добавляет эту строку? Разве не Dock собственности достаточно? Исходя из этого, если я буду динамически создавать это TableLayoutPanel, я должен установить оба Dock и Size?

2 ответа

Решение

Вам не нужно устанавливать Size, настройка Dock достаточно.

Конструктор сериализует все свойства, значение которых отличается от значения по умолчанию. С момента постановки Dock изменения свойств Size, дизайнер тоже его сериализует.

Сериализованный размер будет использоваться в будущем, если вы установите Dock в None, Также установка размера закрепленного элемента управления во время выполнения не имеет никакого эффекта.

Почему дизайнер добавляет эту строку?

Это результат внутренней работы дизайнера элемента управления. Дизайнер Visual Studio принимает каждое свойство, для которого не установлено значение по умолчанию. Значение по умолчанию для Size в конечном итоге сводится к значению по умолчанию Control.Size, который не указан. Следовательно, он всегда генерируется дизайнером. Смотри как пример TabStop где указано значение по умолчанию: только установка его на false в конструкторе сгенерирует код.

Влияет ли это на визуальный конечный результат вашего TableLayoutPanel? Нет.

Другие вопросы по тегам