10

我正在使用 Windows c#。

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

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

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

我已经搜索了很多,但我无法得到正确的答案。我也尝试了AutoSize, Percent,Absolute的属性RowStyle,即使它不起作用。

那么该怎么做和怎么做?我怎样才能做到这一点?

DataGridView最终,我想做和 Windows C#一样的事情。

提前致谢....

我正在研究 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 控件并手动创建了一行和两列。

所以请告诉我该怎么做。

4

2 回答 2

15

我自己还是 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 个行样式,就像您已经在做的那样。

于 2014-03-20T17:01:46.820 回答
-1

有两种方法可以增加表格布局面板的行高。

  1. 查看以下链接: https ://social.msdn.microsoft.com/Forums/windows/en-US/d80db8e1-d6cc-48b8-957f-0f73263c6d4a/how-to-change-the-row-height-of- a-tablelayoutpanel-at-runtime?forum=winforms

    它通过在类后面的代码中设置 YourTableLayoutPanel.RowStyles[index].Height 来指定。

  2. 另一种方法是在 UI 的设计器中设置行高。通过 UI,进入面板的行属性,选择行并使用百分比或绝对值设置所需的高度

于 2019-03-22T13:33:19.577 回答