我試圖在表單中居中放置一個固定大小的控件。.NET中的窗體中的控件居中(Winforms)?
出於興趣,是否有一種非愚蠢的方式來做到這一點?我真正想要的是類似於text-align css屬性的東西。
此刻,我將周圍窗體的填充屬性設置爲合適的大小,並設置要填充的控件的Dock屬性。
我試圖在表單中居中放置一個固定大小的控件。.NET中的窗體中的控件居中(Winforms)?
出於興趣,是否有一種非愚蠢的方式來做到這一點?我真正想要的是類似於text-align css屬性的東西。
此刻,我將周圍窗體的填充屬性設置爲合適的大小,並設置要填充的控件的Dock屬性。
您可以使用錨點來實現此目的。或者更準確地說不使用它們。
控件默認錨定在表單的左上角,這意味着當表單大小將被更改時,它們與表單左上角的距離將保持不變。如果將控件錨點更改爲左下角,則當表單調整大小時,控件將保持與表單底部和左側的距離相同。
在調整方向時關閉錨定方向將使控件保持居中。
注:關閉通過在VS2015屬性窗口錨定,可能需要進入無,無(而不是默認的上,左)
因此,您可以將控件放置在窗體的中心(大約或完全使用「屬性」面板),或者在Form.Load事件處理程序中,將Control.Left,Control.Top屬性設置爲Control.Size和Form。尺寸。 – maxwellb 2010-07-13 18:09:07
太棒了,我從來沒有想過要退出Anchor屬性的所有方面,現在如果我調整控件的大小保持居中。 !大! – FabianSilva 2012-03-23 13:52:15
然後,如果我在中心的表單中放置一個標籤並將它的Anchor設置爲None,那麼爲什麼窗體窗口最大化時它不會保持在中心位置? – user1004959 2012-07-18 11:37:01
myControl.Left = (this.ClientSize.Width - myControl.Width)/2 ;
myControl.Top = (this.ClientSize.Height - myControl.Height)/2;
它包括目測它(好,我想你可以滾蛋一個計算器和計算),但只需在表單上插入所述控件,然後刪除任何錨定(錨點=無)。
既然你沒有說明如果表單可以調整或不存在一個簡單的方法,如果你不在乎調整(如果你做護理,去與米奇小麥溶液):
選擇控制 - >格式(菜單選項) - >在窗口中居中 - >水平或垂直
我發現了一個很好的方法來做到這一點,它將與多個控件一起使用。添加一個3列的TableLayout。使中心列成爲絕對大小(無論您需要多少空間)。將兩個外部列設置爲100%。將面板添加到中心列並添加您需要的任何控件,並將它們放在您想要的位置。該中心小組現在將繼續以您的表單爲中心。
你可以把你想要控制在一個面板中心,並設置左右填充值大於默認值。只要它們是平等的,而且你的控制權固定在專家組的兩邊,那麼它就會出現在該專家組的中心。然後,您可以根據需要將容器面板錨定到其父項。
如果父窗口最大化,則在左上方和頂部屬性。
,你可以把你所有的控件面板,然後寫一個將面板移動到表單中心的代碼。
panelMain.Location =
new Point(ClientSize.Width/2 - panelMain.Size.Width/2,
ClientSize.Height/2 - panelMain.Size.Height/2);
panelMain.Anchor = AnchorStyles.None;
另外,如果你想在另一個另一個控制中心對齊:
//The "ctrlParent" is the one on which you want to align "ctrlToCenter".
//"ctrlParent" can be your "form name" or any other control such as "grid name" and etc.
ctrlToCenter.Parent = ctrlParent;
ctrlToCenter.Left = (ctrlToCenter.Parent.Width - ctrlToCenter.Width)/2;
ctrlToCenter.Top = (ctrlToCenter.Parent.Height - ctrlToCenter.Height)/2;
簡單的解決方案[這裏](http://stackoverflow.com/a/10786900/730701 )。 – Adam 2014-10-09 14:36:32