如何从数据库中检索图像到循环中的4个图片框
本文关键字:4个 循环 图像 数据库 检索 | 更新日期: 2023-09-27 18:03:57
我有一个winform应用程序(VS 2008),有4个图片框,一个按钮(上传)。我想图片框记录的图像从数据库(sql server 2005)按顺序从第一到最后,当我点击按钮。例如:按下按钮,第一图片框显示第一图片,按下按钮,第二图片框显示另一图片,等等。然后第一个图片框显示的是第五张图片。
pb1 = img1, pb2 = img2, pb3 = img3, pb4 = img4, pb1 = img5,..pb4 = img8,pb1 = img9,..etc..
这里有一个循环。我有这段代码,但他只在一个图片框中记录了一个图像。
private void btnSHow_Click(object sender, EventArgs e)
{
SqlConnection connect = new SqlConnection("Data Source=JOHNO-PC''SQLEXPRESS;Initial Catalog=DB_TraficSigns;Integrated Security=True");
SqlCommand command = new SqlCommand("SELECT picture FROM Tab_Sign ORDER BY id", connect);
SqlDataAdapter dp = new SqlDataAdapter(command);
DataSet ds = new DataSet("Tab_Sign");
byte[] MyData = new byte[0];
dp.Fill(ds, "Tab_Sign");
DataRow myRow;
myRow = ds.Tables["Tab_Sign"].Rows[0];
MyData = (byte[])myRow["picture"];
MemoryStream stream = new MemoryStream(MyData);
pb1.Image = Image.FromStream(stream);
}
不要使用pb1, pb2, pb3等,而是将您的图片框放在一个名为pictureBoxes的数组中。将数组的大小放在一个全局变量中,并在声明数组时使用该大小(因此,如果您添加或删除了picturebox,则很容易更改该大小)
int pictureBoxCount = 4;
int currentPictureBox = 0;
PictureBox[] pictureBoxes = new PictureBox[pictureBoxCount];
然后,每次下载图片时,更新数组索引器。
currentPictureBox = (currentPictureBox + 1) % pictureBoxCount;
然后你可以这样做:
pictureBoxes[currentPictureBox].Image = Image.FromStream(stream);