C# 如何在表格布局面板中动态添加行和列

C# 如何在表格布局面板中动态添加行和列,c#,database,C#,Database,我正在用C#开发windows应用程序。我创建了一个windows窗体,其中添加了一个表面板控件。在数据库中,我有一个表,它有4列,如图书名称、图书图像、图书类别和图书子类别。现在我在一个表中有10条记录 我想在表面板中显示所有这些数据。我尝试了以下代码。但我没有得到正确的输出。我必须添加一个图片框控件和三个标签控件,即我必须创建4列,因此列1将有图片框,其他三列各有一个标签。我尝试的代码提供了输出,但这不合适。它在所有4列中显示图片框图像,然后显示标签 但是我想显示输出,比如,每列应该包含唯一

我正在用C#开发windows应用程序。我创建了一个windows窗体,其中添加了一个表面板控件。在数据库中,我有一个表,它有4列,如图书名称、图书图像、图书类别和图书子类别。现在我在一个表中有10条记录

我想在表面板中显示所有这些数据。我尝试了以下代码。但我没有得到正确的输出。我必须添加一个图片框控件和三个标签控件,即我必须创建4列,因此列1将有图片框,其他三列各有一个标签。我尝试的代码提供了输出,但这不合适。它在所有4列中显示图片框图像,然后显示标签

但是我想显示输出,比如,每列应该包含唯一的数据

代码:

public void dynamicgeneratable(int-columnCount,int-rowCount)
{
tableLayoutPanel1.Controls.Clear();
//清除现有的行和列样式
tableLayoutPanel1.ColumnStyles.Clear();
tableLayoutPanel1.RowStyles.Clear();
//分配表的行数和列数
tableLayoutPanel1.ColumnCount=ColumnCount;
tableLayoutPanel1.RowCount=行计数;
WiCommonFunction.LoadCommonSettings();
ShowInformation show=新的ShowInformation();
//ds=show.ShowBookImage();
ds1=show.ShowBookCategory();
DataTable dt1=ds1.表[0];
对于(int i=0;i

请向我建议任何解决方案。提前谢谢。

您正在将所有四个控件添加到每个单元格中,因为您执行

            tableLayoutPanel1.Controls.Add(picture,i,j);
            tableLayoutPanel1.Controls.Add(lblCategory, i, j);
            tableLayoutPanel1.Controls.Add(lblSubCategory, i, j);
            tableLayoutPanel1.Controls.Add(lblBook, i, j);
对于(i,j)的每个组合。您需要某种switch语句来只添加要添加到该单元格中的控件,例如

        switch(i) {
          case 0:
            tableLayoutPanel1.Controls.Add(picture,i,j);
            break;
          case 1:
            tableLayoutPanel1.Controls.Add(lblCategory, i, j);
            break;
          case 2:
            tableLayoutPanel1.Controls.Add(lblSubCategory, i, j);
            break;
          case 3:
            tableLayoutPanel1.Controls.Add(lblBook, i, j);
            break;
        }

谢谢你的回复。这对我很有帮助,我得到了我想要的输出
        switch(i) {
          case 0:
            tableLayoutPanel1.Controls.Add(picture,i,j);
            break;
          case 1:
            tableLayoutPanel1.Controls.Add(lblCategory, i, j);
            break;
          case 2:
            tableLayoutPanel1.Controls.Add(lblSubCategory, i, j);
            break;
          case 3:
            tableLayoutPanel1.Controls.Add(lblBook, i, j);
            break;
        }