кажется, что свойство Dock может быть реализован в терминах acnhoring, например listBox.Dock = DockStyle.Left;
эквивалентно (в моем маленьком тестовом проекте):Являются ли свойства Anchor и Dock взаимоисключающими в WinForms?
listBox.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom;
listBox.Height = form.ClientSize.Height;
Кроме того, вы можете установить якорь AnchorStyles.Right
, который будет противоречить DockStyle.Left
,
Так что я сделал некоторые испытания, и кажется, что изменение Dock
сбрасывает наоборот Anchor
и:
Action Print =()=>Console.WriteLine("Anchor: " + listBox.Anchor + ";; Dock: " + listBox.Dock);
listBox.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom;
Print();
listBox.Dock = DockStyle.None;
Print();
listBox.Dock = DockStyle.Right;
Print();
listBox.Anchor = AnchorStyles.Left | AnchorStyles.Top;
Print();
listBox.Anchor = AnchorStyles.Left;
Print();
Это выход:
Anchor: Top, Bottom, Left;; Dock: None Anchor: Top, Bottom, Left;; Dock: None Anchor: Top, Left;; Dock: Right Anchor: Top, Left;; Dock: Right Anchor: Left;; Dock: None
Так что я полагаю, это означает, что Anchor
и Dock
являются взаимозависимыми, и свойство Anchor
учитывается, только если для параметра Dock
установлено значение None
.
Верно ли это?
Можете ли вы представить * реалистичный * сценарий (в макете), где вы бы использовали оба? – Sinatr
@Sinatr Рассмотрим панель с док-станцией: снизу. Когда вы изменяете размер формы, должна ли панель сохранять размер или перемещаться? – Luaan
@ Луаан, да, я вижу. Стыковка похожа на * приклеивание * с одной стороны (придерживаясь с сохранением абсолютного размера в перпендикулярном направлении). Если вы хотите состыковать с одной стороны **, но ** изменить размер перпендикулярно, вам придется заменить стыковку на якорь. Фактически стыковка ** ** закрепляется. Стыковка, однако, более удобна, потому что для закрепления вы должны сначала поместить/размер, а затем применить якорь, в то время как использование док-станции будет автоматически настраиваться, изменять размер и «привязывать». Из этого следует, что при доке - вы уже используете некоторые якоря (использование их уже невозможно). – Sinatr