[英]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.