2012-06-15 19 views
10

Bu sorun, anlatılandan daha iyi bir şekilde gösterildi; bu nedenle, sorunu gidermek için kullanılacak Visual Studio 2010 projesiyle bir git repo kurdum.TableLayout içine yerleştirilen yerleşik denetimler, oluşturuldukları boyuttan daha küçük boyutta otomatik olarak boyutlandırılmazlar

Bir TableLayout denetimine (tableLayoutPanel1) bir ComboBox denetimi (comboField) eklediğim bir projem var. ComboBox'ın Fill'a Fill değerini ayarladıktan sonra yerleştirildiği TableLayout denetiminin hücresini doldurmasını sağladım. Ayrıca TableLayout denetiminin Dock özelliğini Fill olarak ayarlayarak Form'u doldurması üzerine yerleştirilmiştir. ComboBox'ın genişliği şu anda 193 pikseldir.

Formu çalıştırdığımda ve genişliğini artırdığımda, ComboBox'un boyutu beklendiği gibi artar. Formun boyutunu küçültürümde, ComboBox boyutlarını boyutuna indirir ve orijinal boyutuna (193 piksel) ulaşır. Bu noktada, ComboBox'un genişliği daha fazla azalmayacak ve kontrolün sağ tarafının kırpılmasına neden olacaktır. Bu beklediğim şeyin aksine: MinimumSize belirtilmemişse, ComboBox'un genişliği sıfıra düşecektir. Tablo Layout denetimi gibi, formdaki diğer denetimlerden herhangi biri için bir MinimumSize belirtildi.

durumda TableLayout ikinci sütunun genişliği AutoSize ayarlanmış iken TableLayout birinci sütunun genişliği, 100 piksel Absolute boyutuna ayarlanmış olan, ilgilidir.

Bu formun neden beklentilerime aykırı davrandığına dair herhangi bir ışık tutabilir ve bu şekilde çalışmayı nasıl istediğim konusunda bilgilendirebilir miyim? Herhangi bir yardım çok takdir edilecektir.

cevap

4

Tablelayoutpanel, denetimlerin başlangıç ​​boyutunu saklar ve Dock, ankraj veya AutoSizeMode.GrowAndShrink gibi diğer değerlerden bağımsız olarak bunları asla daha küçük yapmaz. Tasarımcıda, yerleştirilen kontrolün boyutu her zaman saklanır, bu yüzden bulduğum en kolay yöntem, ilkleştirme bileşeninden sonra genişliği 0 olarak ayarlamaktır (çünkü kontrol yerleştirildiğinde, aslında combobox'ı yeniden boyutlandırmaz, TableLayoutPanel Ben kodunuzu indirilen ve bu değişikliği yaptık

 InitializeComponent(); 
     comboField.Width = 0; 
+1

Bu çalışıyor! Teşekkürler! https://github.com/IAmAI/TableLayoutSizingIssueTest/tree/fix-Me.Name –

9

) ayarlanan genişliği olduğunca küçük hale getirmek için izin verir. şimdi çalışıyor -

yüzde 2 sütunun SizeType yapın ve% 100

Tasarımcı Kod olun: -

this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); 

enter image description here

+1

Bu da işe yarıyor. Teşekkürler Andshuman. https://github.com/IAmAI/TableLayoutSizingIssueTest/tree/fix-Angshuman –

+1

Cool..thanks! Sütun/satırın boyutu Yüzde olarak ayarlanmışsa, sütun/satırın boyutu TableLayoutPanel'in boyutuna göre belirlenir. –

İlgili konular