Почему свойство "Размер" элемента управления устанавливается конструктором, когда элемент управления пристыкован к его родительскому элементу в 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
? Нет.