看來,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
是互斥的,僅當Dock
屬性設置爲None
時纔會考慮Anchor
屬性。
這是正確的嗎?
你可以提出*現實的*場景(佈局條款),你會同時使用兩個? – Sinatr
@Sinatr考慮一個Dock:底部的面板。當你調整表格大小,或者移動? – Luaan
@Luaan,是的,我明白了。對接就像*粘在一邊(堅持保持垂直方向的絕對尺寸)。如果你想停靠在一邊**,但是**垂直調整大小,那麼你必須用錨定來替換對接。實際上對接**是**錨定。然而,對接更加舒適,因爲要錨定您必須先定位/尺寸,然後應用錨點,而使用碼頭將自動奇蹟般地定位,調整大小和「錨定」。從這裏可以看出當你停靠的時候 - 你已經使用了一些錨(不再使用它們)。 – Sinatr