2010-08-09 40 views
9

與錨我可以寫如下一行:如何停靠到頂部和左

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

它將錨myControl的左側和頂部。

爲什麼我不能做到以下幾點:

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

我可以寫上線,但它是所有設置DockStyle到左。

對此有何想法/原因?

+0

我想你只是沒有完全理解如何通過使用dock,anchor和某種容器控件(如TableLayoutPanel)來獲得所需的佈局。通過這些元素,您可以構建各種佈局,並且可以很好地根據表單/控件的大小進行擴展。因此,如果您提供更多關於您想要在佈局中實現的信息,我相信我們可以找到解決方案。 – Oliver 2010-08-09 14:22:59

回答

11

你不能這樣做的原因是因爲設置一個DockStyle基本上停靠/填充了指定邊緣的整體性。

例如,DockStyle.Left意味着該項目的高度被停靠永遠是所述容器和所述的X的高度,Y位置將始終爲0,0

DockStyle.Top意味着的寬度項目將始終是容器的寬度,位置將始終爲0,0。

設置DockStyle.TopDockStyle.Left基本上會給你DockStyle.Fill。即作爲容器的高度相同的寬度

+0

謝謝Gtt,這解釋了我所看到的。我可能不得不提出另一個關於我試圖實現的問題,一旦我找出如何說出它! – AidanO 2010-08-09 14:16:28

+0

沒問題。我經歷了所有的對接和錨定的痛苦,所以我會留意下一個問題。 – GenericTypeTea 2010-08-09 14:17:40

1

DockStyle只能設置爲一個值,而不是Anchor可以設置爲很多。

這就是爲什麼有Anchor屬性,以便您可以調整控件如何更具體地調整窗體大小調整。

+0

這是真的,但是這個對接限制的原因是什麼?有沒有辦法解決這個問題? – AidanO 2010-08-09 13:59:28

+0

我不知道一個具體的原因,我認爲Dock只是爲了簡單,簡單的控件對接,並且不會有多重效果(你不可能有一個碼頭樣式填充和沒有例如),所以這就是爲什麼有錨也是。 – w69rdy 2010-08-09 14:05:12

3

A Dock是預先確定的錨集,而Anchor是自定義的碼頭配置。

DockStyle.TopAnchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right)相同,除了錨可以坐在任何初始位置並且碼頭將移動到遠邊。

+0

他們有點相似,但他們不一樣。錨定允許您設置遠離容器邊緣的位置。停靠強制停靠的控件到指定的邊。即左= 0頂部= 0. – GenericTypeTea 2010-08-09 14:03:13

+0

@GenericTypeTea我沒有在我的回答中說這個 – Codesleuth 2010-08-09 14:19:40

+0

所以你做到了。我的道歉,我顯然沒有正確閱讀。 – GenericTypeTea 2010-08-09 14:27:01

相關問題