2012-07-05 94 views
0

在TableLayoutPanel中,默認情況下,行或列中的最後一個元素佔用剩餘空間。我怎樣才能實現倒數第二或任何其他元素佔用儘可能多空間的佈局,其中最後一個元素只佔用盡可能多的空間?C#TableLayoutPanel填充

回答

4

這取決於如何設置其他行。 假設所有其他行都是自動調整大小或固定大小,將倒數第二行的大小設置爲100%就可以達到您想要的效果。設計者生成的代碼如下所示:

this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); 
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); 
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); 
+0

你打敗了我 - 只是! +1 – dash

+0

感謝你們兩個,但破折號是正確的(多米尼克第一):P – arik

+0

@DominiqueJacquel處於第一位。當我發佈我的答案時,我很驚訝,看到另一個非常相似! – dash

2

我已經使用Windows Forms和.Net Framework 4測試了這個;

最簡單的解決方案似乎是創建一個表格佈局面板,並將您的控件嵌入到每個列中。完成後,將所有列的大小設置爲「AutoSize」。

然後把你列倒數第二,並設置大小爲「100%」

下面是我的設計師代碼:

tableLayoutPanel1 = new TableLayoutPanel(); 
    tableLayoutPanel1.ColumnCount = 4; 
    tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); 
    tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); 
    tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); 
    tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); 

請務必先嵌入您的控制,因爲,如果有在其他單元格中沒有內容,將倒數第二列設置爲100%大小,然後使用設計器將控件放入空單元格時非常棘手,因爲100%列有效地「竊取」了它們的空間。