如何从数据库中检索图像到循环中的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);
}

如何从数据库中检索图像到循环中的4个图片框

不要使用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);