TableLayoutPanel |添加新行和控件

时间:2014-10-03 05:37:53

标签: c# .net winforms tablelayoutpanel

我陷入困境。我试图在底部的C#中向TableLayoutPanel添加新行,并在每次添加新行时调整TLP的大小,我搜索了很多地方,但我似乎无法找到正确的方法来做到这一点。

问题 当我添加一行并向其添加组件时,这些组件与第一行重叠。

OVERLAPPING

这就是我如何添加新行

private int AddTableRow()
{
    int index = tableLayoutPanel1.RowCount++;
    RowStyle style = new RowStyle(SizeType.AutoSize, 20F);
    tableLayoutPanel1.RowStyles.Add(style);
    return index;
}

这就是我如何添加组件

private void AddControls
{
    int rowIndex = AddTableRow();  
    tableLayoutPanel1.Visible = false;
    tableLayoutPanel1.Controls.Add(myComboBox1, 0, rowIndex);
    tableLayoutPanel1.Controls.Add(myComboBox2, 1, rowIndex);
    tableLayoutPanel1.Controls.Add(mytextBox1 , 2, rowIndex);
    tableLayoutPanel1.Controls.Add(mytextBox2 , 3, rowIndex);
    tableLayoutPanel1.Controls.Add(mytextBox3 , 4, rowIndex);
    tableLayoutPanel1.Controls.Add(mytextBox4 , 5, rowIndex);
    tableLayoutPanel1.Controls.Add(mytextBox5 , 6, rowIndex);
    tableLayoutPanel1.Visible = true;
}

2 个答案:

答案 0 :(得分:0)

根据我的记忆,RowCount不是出于任何原因获取行数的可靠方法

相反,我会通过将控件总数除以列数来获取要添加的行:

int rowNo = Controls.Count / numberOfColumns;

但是除非你有充分的理由不使用DataGridView,否则我建议你这样做。 TableLayoutPanel很难动态使用

答案 1 :(得分:-1)

只是为了确定:在AddControls()中,您是否为每一行动态创建新的组合框和文本框?我尝试反复添加相同的控件实例并获得与您遇到的相同的行为。