0

4つの画像ボックスと1つのボタン(アップロード)を備えたWinFormアプリケーション(VS 2008)があります。ボタンをクリックすると、データベース(SQL Server 2005)から記録された画像を最初から最後まで順番に画像化したいと思います。たとえば、ボタンを押すと、最初の画像ボックスに最初の画像が表示され、ボタンを押すと、2番目の画像に別の画像ボックスが表示されます。次に、最初の画像ボックスに5番目の画像が表示されます。

pb1 = img1, pb2 = img2, pb3 = img3, pb4 = img4, pb1 = img5,..pb4 = img8,pb1 = img9,..etc..

それで、ループがありました。私はこのコードを持っていますが、彼は画像ボックスに1つの画像しか記録しませんでした。

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 に答える