我正在尝试将图片加载到动态创建的图片框中。这些图片将从位于我本地网络上的mysql服务器中检索。通过更改查询只能选择1个ID,我已经能够在图片框中获得一张图片。所以我知道它当时适用于一个。
代码:
private void ass_wijzig_Load(object sender, EventArgs e)
{
string query = "Select Image From Product";
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;
DataRow myrow;
byte[] mydata = new byte[0];
int x = 10;
int y = 10;
for (int i = 0; i < 2; i++)
{
myrow= ds.Tables["Image"].Rows[i];
// var data = (Byte[])(ds.Tables["Image"].Rows[i]["Image"]);
mydata = (Byte[])(ds.Tables["Image"].Rows[i]["Image"]);
Stream[] str = new MemoryStream[i];
str[i] = new MemoryStream(mydata);
PictureBox[] pbx = new PictureBox[i];
pbx[i] = new PictureBox();
pbx[i].Size = new Size(150, 150);
pbx[i].SizeMode = PictureBoxSizeMode.StretchImage;
pbx[i].Image = Image.FromStream(str[i]);
pbx[i].Visible = true;
pbx[i].Location = new Point(x, y);
x += pbx[i].Location.X + pbx[i].Width;
this.Controls.Add(pbx[i]);
}
Stream[] str = new MemoryStream[i];
引发了异常
如果有人知道这个问题,我会很荣幸,
提前致谢
答案 0 :(得分:0)
问题是数组是0索引的。
Stream[] str = new MemoryStream[i];
创建一个长度为i的数组,因此有效索引为0 ... i - 1。
然后你做:
str[i] = new MemoryStream(mydata);
试图访问索引i,这是无效的。
查看你的代码,我不知道为什么你在这里使用数组而不是普通的变量。只是做:
Stream str = new MemoryStream(myData);
代替。