3

私はC#でWindowsアプリケーションに取り組んでいます.1つのテーブルパネルコントロールを追加したという点で、1つのWindowsフォームを作成しました.データベースには、本の名前、本の画像、本のカテゴリ、本のサブなどの4つの列を持つ1つのテーブルがありますカテゴリ。現在、テーブルに 10 個のレコードがあります。

これらすべてのデータをテーブル パネルに表示したいのですが、次のコードを試しましたが、適切な出力が得られません。1 つの画像ボックス コントロールと 3 つのラベル コントロールを追加する必要があります。つまり、4 つの列を作成する必要があるため、列 1 には画像ボックスと他の 3 つの列には、それぞれに 1 つのラベルがあります。試したコードでは出力が得られますが、適切ではありません。4 つの列すべてに画像ボックスの画像が表示され、ラベルが表示されます。

しかし、出力を次のように表示したいのですが、各列には一意のデータが含まれている必要があります。

コード:

public void DynamicGenerateTable(int columnCount, int rowCount)
    {
        tableLayoutPanel1.Controls.Clear();
        //Clear out the existing row and column styles
        tableLayoutPanel1.ColumnStyles.Clear();
        tableLayoutPanel1.RowStyles.Clear();

        //Assign table no of rows and column
        tableLayoutPanel1.ColumnCount = columnCount;
        tableLayoutPanel1.RowCount = rowCount;
        WiCommonFunction.LoadCommonSettings();
        ShowInformation show = new ShowInformation();
        //ds = show.ShowBookImage();
        ds1 = show.ShowBookCategory();
        DataTable dt1 = ds1.Tables[0];

        for (int i = 0; i < columnCount; i++)
        {
            tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));

            for (int j = 0; j < rowCount; j++)
            {
                if (i == 0)
                {
                    //defining the size of cell
                    tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
                }
                PictureBox picture = new PictureBox();
                picture.Size = new Size(220, 180);
                picture.SizeMode = PictureBoxSizeMode.StretchImage;
                Byte[] byteImage = (Byte[])(dt1.Rows[j]["BookImage"]);
                MemoryStream ms = new MemoryStream(byteImage);
                picture.Image = Image.FromStream(ms);

                Label lblCategory = new Label();
                lblCategory.Text = dt1.Rows[j]["CategoryName"].ToString();

                Label lblSubCategory = new Label();
                lblCategory.Text = dt1.Rows[j]["SubCategoryName"].ToString();

                Label lblBook = new Label();
                lblBook.Text = dt1.Rows[j]["BookName"].ToString();
                tableLayoutPanel1.Controls.Add(picture,i,j);
                tableLayoutPanel1.Controls.Add(lblCategory, i, j);
                tableLayoutPanel1.Controls.Add(lblSubCategory, i, j);
                tableLayoutPanel1.Controls.Add(lblBook, i, j);
            }
        }
    }

解決策を提案してください。事前に感謝します。

4

1 に答える 1