2010-08-09 4 views
9

с якорем я могу написать следующую строку:Как состыковать к верхней и левой

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

И это будет якорь myControl слева и сверху.

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

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

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

Любые мысли/причины для этого?

+0

Я думаю, вы просто не понимали, как получить желаемый макет, используя док-станцию, якорь и какой-то контроль контейнера (например, TableLayoutPanel). С помощью этих элементов вы можете создавать все виды макетов, которые будут хорошо масштабироваться с размером вашей формы/элемента управления. Поэтому, если вы предоставите больше информации о том, что вам нравится в вашем макете, я уверен, что мы сможем найти решение. – Oliver

ответ

11

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

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

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

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

+0

Спасибо, Гтт, это объясняет, что я вижу. Возможно, мне придется задать еще один вопрос о том, чего я пытаюсь достичь, как только выясню, как это выразить! – AidanO

+0

Нет проблем. Я пережил всю боль от стыковки и привязанности, поэтому я буду следить за следующим вопросом. – GenericTypeTea

1

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

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

+0

Это правда, но в чем причина этого ограничения на стыковку и есть ли способ вокруг него? – AidanO

+0

Я не знаю, почему, я думаю, что Dock - это просто для простой и простой стыковки элементов управления и не будет работать с кратными (у вас не может быть заливка стиля док-станции, и нет, например,), поэтому Якорь также. – w69rdy

3

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

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

+0

Они похожи, но они не то же самое. Анкеровка позволяет вам устанавливать места вдали от краев контейнера. Стыковка заставляет закрепленное управление к указанному краю. То есть Left = 0. Top = 0. – GenericTypeTea

+0

@GenericTypeTea Я сказал это в своем ответе – Codesleuth

+0

Так вы и сделали. Мои извинения, я, видимо, не прочитал его должным образом. – GenericTypeTea

 Смежные вопросы

  • Нет связанных вопросов^_^