繁体   English   中英

TableLayoutPanel | 添加新的行和控件

[英]TableLayoutPanel | adding new rows and controls

我在这里陷入了困境。 我试图在底部的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;
}

据我所知,无论出于何种原因,RowCount都不是获取行数的可靠方法

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

int rowNo = Controls.Count / numberOfColumns;

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

可以肯定的是:在AddControls() ,您是否为每一行动态创建新的组合框和文本框?我尝试一遍又一遍地添加相同的控件实例,并得到与您所遇到的相同的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM