我陷入困境。我试图在底部的C#中向TableLayoutPanel添加新行,并在每次添加新行时调整TLP的大小,我搜索了很多地方,但我似乎无法找到正确的方法来做到这一点。
问题 当我添加一行并向其添加组件时,这些组件与第一行重叠。
这就是我如何添加新行
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;
}
答案 0 :(得分:0)
根据我的记忆,RowCount不是出于任何原因获取行数的可靠方法
相反,我会通过将控件总数除以列数来获取要添加的行:
int rowNo = Controls.Count / numberOfColumns;
但是除非你有充分的理由不使用DataGridView,否则我建议你这样做。 TableLayoutPanel很难动态使用
答案 1 :(得分:-1)
只是为了确定:在AddControls()
中,您是否为每一行动态创建新的组合框和文本框?我尝试反复添加相同的控件实例并获得与您遇到的相同的行为。