gpt4 book ai didi

c# - 修复 TableLayoutPanel 中每一行的行高

转载 作者:太空狗 更新时间:2023-10-29 22:27:04 25 4
gpt4 key购买 nike

我正在使用 Windows C#。

首先,根据我的需要不能改变的事情如下:

  1. TableLayoutPanel 的大小是固定的。
  2. 列的总数是固定的。

现在,我想为所有行设置一个固定高度,但随着行数的增加,如果我将 RowStyle 属性设置为 Percent100.0F 然后它适用于 3 到 4 个项目,但在 4-5 个项目之后,一行上的控件会覆盖另一行上的控件。

我已经搜索了这么多,但我无法得到正确的答案。我还尝试了 RowStyleAutoSizePercentAbsolute 属性,尽管它不起作用。

那么该做什么以及如何做?我怎样才能做到这一点?

最终,我想像 Windows C# 的 DataGridView 那样做。

提前致谢....

我正在使用 WinForms...示例代码在这里..

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 #of 行时工作正常,但每当 #of 行(在本例中,for 循环中的变量 cnt)增加时,行就会相互覆盖,即一个控件覆盖另一个控件。 ..我拖放了 TableLayoutPanel 控件并手动创建了一行和两列。

所以请告诉我怎么做。

最佳答案

我自己还是 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;
}

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

编辑:我刚刚意识到添加 N 行不会添加 N 行样式,您可以遍历。我认为正在发生的事情是您要添加 N 行,但它们都没有行样式。

我想您可以 Clear() 行样式,然后只需添加 N 行样式,就像您已经在做的那样。

关于c# - 修复 TableLayoutPanel 中每一行的行高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com