0

我有一个 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

1 回答 1

1

不要使用 pb1、pb2、pb3 等,而是将您的图片框放在一个名为 pictureBoxes 之类的数组中。将数组的大小放在全局中,并在声明数组时使用该大小(因此,如果您添加或删除图片框,它很容易更改。)

int pictureBoxCount = 4;
int currentPictureBox = 0;
PictureBox[] pictureBoxes = new PictureBox[pictureBoxCount];

然后,每次下载图片时,更新数组索引器。

currentPictureBox = (currentPictureBox + 1) % pictureBoxCount;

然后,您可以执行以下操作:

pictureBoxes[currentPictureBox].Image = Image.FromStream(stream);
于 2013-03-13T18:08:24.110 回答