Как пристыковаться к верху и влево - PullRequest
10 голосов
/ 09 августа 2010

При помощи якоря я могу написать следующую строку:

myControl.Anchor = (AnchorStyles.Top | AnchorStyles.Left);

И он будет привязывать myControl влево и вверх.

Почему я не могу сделать следующее:

myControl.Dock = (DockStyle.Top | DockStyle.Left);

Я могу написать приведенную выше строку, но все, что она делает, это устанавливает DockStyle влево.

Есть какие-нибудь мысли / причины для этого?

Ответы [ 4 ]

12 голосов
/ 09 августа 2010

Причина, по которой вы не можете этого сделать, заключается в том, что установка DockStyle в основном стыкует / заполняет целое указанного ребра.

Например, DockStyle.Left означает, что высота закрепляемого элемента всегда будет высотой контейнера, а расположение X, Y всегда будет 0, 0.

DockStyle.Top означает, что ширина элемента всегда будет равна ширине контейнера, а местоположение всегда будет 0,0.

Установка DockStyle.Top и DockStyle.Left по существу даст вам DockStyle.Fill. То есть такая же ширина и высота как у контейнера.

3 голосов
/ 09 августа 2010

A Dock - это заранее определенный набор якорей, тогда как Anchor - это настраиваемая конфигурация дока.

DockStyle.Top - это то же самое, что и Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right), за исключением того, что якорь может сидеть в любомИсходное положение и док переместятся на дальний край.

1 голос
/ 09 августа 2010

DockStyle может быть установлено только на одно значение, в отличие от Anchor, которое может быть установлено на многие.

Именно поэтому есть свойство Anchor, чтобы вы могли более точно настроить реакцию элемента управления на изменение размера формы.

0 голосов
/ 19 апреля 2018

Возможно, вы ищете атрибут Anchor:

myControl.Anchor = AnchorStyles.Bottom  | AnchorStyles.Right
...