在TableLayoutPanel中,默认情况下,行或列中的最后一个元素占用剩余空间。如何实现倒数第二个或任何其他元素占用尽可能多的空间的布局,其中,最后一个元素只占用所需的空间?
答案 0 :(得分: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());
答案 1 :(得分: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%,那么使用设计器将控件放入空单元格中会很困难专栏有效地“窃取”了他们的空间。