С помощью привязки я могу написать следующую строку:
myControl.Anchor = (AnchorStyles.Top | AnchorStyles.Left);
И она будет привязывать myControl
слева и сверху.
Почему я не могу сделать следующее:
myControl.Dock = (DockStyle.Top | DockStyle.Left);
Я могу написать вышеприведенную строку, но все, что он делает, это устанавливает DockStyle
влево.
Есть какие-нибудь мысли / причины для этого?
Причина, по которой вы не можете этого сделать, заключается в том, что установка DockStyle
в основном докирует/заполняет весь указанный край.
Например, DockStyle.Left
означает, что высота пристыковываемого элемента всегда будет высотой контейнера, а расположение X,Y всегда будет 0, 0.
DockStyle.Top
означает, что ширина элемента всегда будет шириной контейнера, а расположение всегда будет 0,0.
Установка DockStyle.Top
и DockStyle.Left
по сути даст вам DockStyle.Fill
. Т.е. ту же ширину и высоту, что и контейнер.
Док Dock
- это предварительно определенный набор якорей, в то время как Anchor
- это пользовательская конфигурация дока.
DockStyle.Top
- это то же самое, что Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right)
, за исключением того, что якорь может находиться в любом начальном положении, а док будет перемещаться к дальнему краю.
DockStyle
может быть установлен только на одно значение, в отличие от привязки
, которое может быть установлено на множество.
Вот почему существует свойство Якорь
, чтобы вы могли более конкретно настроить реакцию элемента управления на изменение размера формы.