2016-04-09 28 views
1

Her hücrede otomatik boyutlu 2x2 tablo düzeni ve uzun otomatik boyutlu etiketler var. Bu düzen, otomatik boyutlu olmayan hücrelerle diğer tablo düzenindedir.TableLayoutPanel, satır yüksekliği hatalı

using System; 
using System.Windows.Forms; 

namespace TestForms { 
    static class Program { 
     [STAThread] 
     static void Main() { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Application.Run(new TestForm()); 
     } 
    } 

    class TestForm : Form { 
     public TestForm() { 
      var childPanel = new TableLayoutPanel(); 
      var label8 = new Label(); 
      var label9 = new Label(); 
      var label10 = new Label(); 
      var label7 = new Label(); 
      var rootPanel = new TableLayoutPanel(); 

      childPanel.AutoSize = true; 
      childPanel.AutoSizeMode = AutoSizeMode.GrowAndShrink; 
      childPanel.BackColor = System.Drawing.Color.Silver; 
      childPanel.ColumnCount = 2; 
      childPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); 
      childPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); 
      childPanel.Controls.Add(label8, 1, 0); 
      childPanel.Controls.Add(label9, 0, 1); 
      childPanel.Controls.Add(label10, 1, 1); 
      childPanel.Controls.Add(label7, 0, 0); 
      childPanel.Dock = DockStyle.Top; 
      childPanel.RowCount = 2; 
      childPanel.RowStyles.Add(new RowStyle()); 
      childPanel.RowStyles.Add(new RowStyle()); 

      label8.AutoSize = true; 
      label8.Text = "2ggggggggggggggggg"; 

      label9.AutoSize = true; 
      label9.Text = "label9"; 

      label10.AutoSize = true; 
      label10.Text = "label10"; 

      label7.AutoSize = true; 
      label7.Text = "label7"; 

      rootPanel.ColumnCount = 1; 
      rootPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F)); 
      rootPanel.Controls.Add(childPanel, 0, 0); 
      rootPanel.Dock = DockStyle.Fill; 
      rootPanel.RowCount = 1; 
      rootPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); 

      ClientSize = new System.Drawing.Size(205, 197); 
      Controls.Add(rootPanel); 
     } 
    } 
} 

şu sonucu elde: Minimal proje sorunu yeniden oluşturmaya son satır yanlış yükseklik var Neden

Screenshot

? Bir çözüm var mı? Bazı böcek isabet gibi etiketlerin AutoSize bazı false, ya vs İlk sütun tarzı SizeType.AutoSize

Aşağıdaki geçici çözümü kullanabilirsiniz yapma eğer

cevap

0

İlginçtir, bu olmaz çünkü görünüyor. Çirkin, ama bulduğum tek yol bu. Buradaki fikir Label'u içeren AutoSizefalse olarak ayarlanmış görünmez satır eklemektir. Örneğin, normal düzeni ayarladıktan sonra aşağıdaki satırları ekleyin:

childPanel.RowCount++; 
childPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 0)); 
childPanel.Controls.Add(new Label { AutoSize = false }, 0, childPanel.RowCount - 1); 
İlgili konular