2017-08-08 117 views
0

標籤和複選框有一個「填充」屬性。 如果我想在TableLayoutPanel中設置它們的位置,這非常方便。 現在我想對ComboBox做同樣的事情,但令我驚訝的是我沒有在ComboBox中找到Padding屬性。ComboBox的Padding屬性在哪裏?

它真的不在嗎? 如果沒有,是否有解決方法來設置TableLayoutPanel中的組合框縮進的縮進?

+0

它在那裏,因爲一個ComboBox是一個控件。請參閱https://msdn.microsoft.com/en-us/library/system.windows.forms.control.padding(v=vs.110).aspx。此外,它可能隱藏了類似'[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]''。但是即使你沒有看到它,你也應該能夠從代碼中設置它。 – djv

回答

2

由於ComboBox派生自Control,因此它確實存在。它有財產。請參閱https://msdn.microsoft.com/en-us/library/system.windows.forms.control.padding(v=vs.110).aspx

但開發人員故意將其隱藏在ComboBox中。這裏是ComboBox.Padding

組合框[從元數據]

// 
// Summary: 
//  This property is not relevant for this class. 
// 
// Returns: 
//  A System.Windows.Forms.Padding value. 
[Browsable(false)] 
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
[EditorBrowsable(EditorBrowsableState.Never)] 
public Padding Padding { get; set; } 

顯然的簽名,This property is not relevant for this class.

並不是說你不能嘗試在運行時從代碼修改...

this.comboBox1.Padding = new Padding(10); // this compiles! 

...但這似乎並沒有做任何東西。

TableLayoutPanel具有填充本身。也許這會適用於你

+1

這是兩年後我會討厭自己的評論...... :-)沒有解釋爲什麼它不相關。 – tmighty

+0

但TableLayoutPanel沒有填充每個行/列,只爲本身,對不對? – tmighty

+0

它有填充和邊距。填充應該處理你在用其他控件進行的操作,但將適用於所有這些控件。您可能需要首先根據組合框設置tlp填充,然後單獨調整其他填充。 – djv