我正在开发c#操作系统。
第一,由于我的需要而不能改变的事情如下:
TableLayoutPanel
的大小是固定的。现在,我希望为所有行设置一个固定高度,但是随着行数的增加,如果我将RowStyle
属性设置为带有100.0F
的Percent
,那么它对3到4个项的工作正常,但是在4-5项之后,一行上的控件会覆盖另一行上的控件。
我已经寻找了这么多,但我无法得到正确的答案。我也尝试过AutoSize
、Percent
、Absolute
属性的RowStyle
,尽管它不起作用。
那该怎么做和怎么做?我怎样才能做到这一点?
最终,我想和DataGridView
of C#一样做同样的事情。
提前谢谢..。
我正在研究WinForms...the示例代码。
int cnt = tableLayout.RowCount = myDataTable.Rows.Count;
tableLayout.Size = new System.Drawing.Size(555, 200);
for (int i = 1; i <= cnt; i++)
{
Label lblSrNo = new Label();
lblSrNo.Text = i.ToString();
TextBox txt = new TextBox();
txt.Text = "";
txt.Size = new System.Drawing.Size(69, 20);
tableLayout.Controls.Add(lblSrNo, 0, i - 1);
tableLayout.Controls.Add(txt, 1, i - 1);
}
tableLayout.RowStyles.Clear();
foreach (RowStyle rs in tableLayout.RowStyles)
tableLayout.RowStyles.Add(new RowStyle(SizeType.AutoSize));
标签和文本框对4-5 #行运行良好,但是每当行#(在本例中为变量cnt in for循环)增加时,行将相互覆盖--即一个控件覆盖另一个控件……我拖放了TableLayoutPanel控件,并手动创建了一行和两个列。
所以请告诉我怎么做。
发布于 2014-03-20 17:01:46
我自己还不熟悉tableLayoutPanels,但我注意到在代码的底部,您正在清除集合中的所有行样式,然后尝试在您的foreach循环中迭代它们。
是你干的:
tableLayout.RowStyles.Clear(); //now you have zero rowstyles
foreach (RowStyle rs in tableLayout.RowStyles) //this will never execute
tableLayout.RowStyles.Add(new RowStyle(SizeType.AutoSize));
试试这个吧。
TableLayoutRowStyleCollection styles =
tableLayout.RowStyles;
foreach (RowStyle style in styles){
// Set the row height to 20 pixels.
style.SizeType = SizeType.Absolute;
style.Height = 20;
}
编辑:我刚刚意识到,添加N行并不会添加N个可以迭代的行样式。我认为您正在添加N行,但它们都没有行样式。
我想您可以清除()行样式,然后添加N个行样式,类似于您已经在做的事情。
发布于 2019-03-22 13:33:19
增加表布局面板的行高有两种方法。
https://stackoverflow.com/questions/15004937
复制相似问题