簡體   English   中英

為每行C#動態創建控件

[英]Create control dynamically for each row C#

問題

我正在嘗試為包含圖像的每一行創建一個控件。

private void ass_wijzig_Load(object sender, EventArgs e)
{
    //query's
    string count = "select COUNT(Image) from product";
    string query = "select image from product";
    //commands
    MySqlCommand cmd = new MySqlCommand(count, connection);
    cmd.CommandType = CommandType.Text;
    int totalcount = Convert.ToInt32(cmd.ExecuteScalar());
    MySqlCommand cmd2 = new MySqlCommand(query, connection);
    MySqlDataReader reader = cmd2.ExecuteReader();
    if (reader.Read())
    {
        for (int i = 0; i <= totalcount; i++)
        {
            //What do I need to put here?
        }
    }

案件

該程序將查找我的產品表中有多少行。 每個創建的行都包含一個圖像。 我希望程序檢查有多少行(有效),然后創建一個包含來自該行圖像的圖片框。 如您所見,我已經確保每一行都得到計數。 有人告訴我不要使用數組。 為了從數據庫中檢索圖片,您需要使用數據適配器和數據表。

如何創建一個圖片框,其中包含表格中每一行的正確圖片?

附件

將一張圖片放入圖片框的代碼

private void ass_wijzig_Load(object sender, EventArgs e)
{
        string query = "Select Image From Product where productid = 1";
        MySqlCommand cmd = new MySqlCommand(query, connection);
        // MySqlDataReader reader = cmd.ExecuteReader();
        var da = new MySqlDataAdapter(cmd);
        var ds = new DataSet();
        da.Fill(ds, "Image");
        int count = ds.Tables["Image"].Rows.Count;



        if (count > 0)
        {
            var data = (Byte[])(ds.Tables["Image"].Rows[count - 1]["Image"]);
            var stream = new MemoryStream(data);
            pictureBox1.Image = Image.FromStream(stream);
        } 

非常重要!,上層代碼僅用於確保能夠將圖片放入圖片框,我包含了此代碼以支持我必須使用數據表和數據適配器的聲明。 此代碼不再包含在我的項目中。

提前致謝

這樣嘗試

private void ass_wijzig_Load(object sender, EventArgs e)
     {
            string query = "Select Image From Product where productid = 1";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            // MySqlDataReader reader = cmd.ExecuteReader();
            var da = new MySqlDataAdapter(cmd);
            var ds = new DataSet();
            da.Fill(ds, "Image");
            int count = ds.Tables["Image"].Rows.Count;
           List<PictureBox> pbList = new List<PictureBox>();

            for (int i = 0; i < count-1; i++)
            {                
                var data = (Byte[])(ds.Tables["Image"].Rows[i]["Image"]);
                var stream = new MemoryStream(data);
                pbList[i] = new PictureBox();               
                pbList[i].Name = "pic" + i;
                pbList[i].Size = new Size(300, 75);
                pbList[i].Image = Image.FromStream(stream);
                myform.Controls.Add(pbList[i]);
            } 
      }

更新

您不需要為PictureBox循環數組

private void ass_wijzig_Load(object sender, EventArgs e)
         {
                string query = "Select Image From Product where productid = 1";
                MySqlCommand cmd = new MySqlCommand(query, connection);
                // MySqlDataReader reader = cmd.ExecuteReader();
                var da = new MySqlDataAdapter(cmd);
                var ds = new DataSet();
                da.Fill(ds, "Image");
                int count = ds.Tables["Image"].Rows.Count;

                for (int i = 0; i < count-1; i++)
                {                
                    var data = (Byte[])(ds.Tables["Image"].Rows[i]["Image"]);
                    var stream = new MemoryStream(data);
                    PictureBox pbList = new PictureBox();               
                    pbList.Name = "pic" + i;
                    pbList.Size = new Size(300, 75);
                    pbList.Image = Image.FromStream(stream);
                    myform.Controls.Add(pbList);
                } 
          }
private void ass_wijzig_Load(object sender, EventArgs e)
{
        string query = "Select Image From Product where productid = 1";

       MySqlDataAdapter adpt=new MySqlDataAdapter(query,connection);
       DataTable dt=new DataTable();
       adpt.Fill(dt);
     if(dt.Rows.Count>0)
     {
      PictureBox pcb[]=new PictureBox[dt.rows.count];
       for(int i=0;i<dt.Rows.Count;i++)
       {
            var data = (Byte[])(dt.Rows[i]["Image"].ToString());
            var stream = new MemoryStream(data);
            pcb[i].Image = Image.FromStream(stream);
       }

     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM