2012-07-05 90 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%列有效地“窃取”了它们的空间。