2012-01-31 67 views
4

所以,我有一個不同大小的控件(它是一個標籤)。我想在每次改變時重新輸入表單(水平居中,而不是垂直)。我將如何以編程方式做到這一點?如何在C#中的運行時將控件移動到屏幕中心?

+0

您可以嘗試Control.Docking屬性。 – adatapost 2012-01-31 04:00:16

+1

僞代碼:水平居中:Label.X =(form.Width - label.Width)/ 2;垂直居中:Label.Y =(form.Height - label.Height)/ 2; ..要做到垂直,你沒有問,這可以工作,如果窗體是父,否則你將不得不使用Location屬性來設置控件的左上點。 – 2012-01-31 04:05:55

+1

@JimSchubert:請不要在評論中回答問題。 – 2012-01-31 04:14:42

回答

7
YourLabel.Left = (YourForm.Width/2) - (YourLabel.Width/2); 

如果您希望在每次更改表格尺寸時對其​​進行調整,請使用Form.Resize事件。

+0

我也抓到了。 :D – 2012-01-31 04:01:51

+0

不要以編程方式使用標籤的Docking屬性來居中。 – 2012-01-31 04:06:32

+0

確保在設置YourLabel.Left之前檢查負值以避免運行時錯誤。 – xxbbcc 2012-01-31 04:06:57

4

無需代碼:AutoSize = False,TextAlign = TopCenter。儘量讓它變大。右邊的錨是可選的。

+0

不能很好地工作 - 就像我的RAD嘗試:(編輯沒有正確的錨定它實際上沒問題。 – 2012-01-31 05:11:56

0

好吧,所以我站在糾正 - 謝謝你們。

這是一個解決方法,使用RAD(設計時間)無代碼地完成它。 注意我會@鯊魚的答案去,因爲我不認爲這是你以後會實現的結果,但在這裏它是:

  • 滴在形式的按鈕

  • 其文本設置爲文本在標籤

  • 大小按鈕以適合文本

  • 在按鈕屬性「FlatStlye =扁平」

  • 在按鈕的特性,擴大外形扁平,並設置邊框大小= 0

  • 現在設置錨左右

1

到中心的任何組件最簡單方法。可能對某人有幫助。右鍵單擊項目 - >添加 - >類

用下面的代碼更新該類。

public static class MyClass 
{ 
    public static void center(this Control component) 
    { 
     float compWidth = component.Width; 
     float parentWidth = component.Parent.Width; 
     float middled = (parentWidth/2) - (compWidth/2); 

     component.Left = Convert.ToInt32(middled); 
    } 
} 

然後你可以中間任何組件。你可以使用任何這樣的組件

MyLabel.center(); 
MyPanel.center(); 
相關問題