解决方案 »

  1.   

    用pic.Tag代替imageList1.Images[i].Tag 
    for (int i = 0; i < imageList1.Images.Count; i++)
                {
                    //imageList1.Images[i].Tag = "" + mydataSet.Tables["test_user"].Rows[i]["picture"].ToString() + "";
                    PictureBox pic = new PictureBox();
                    this.Controls.Add(pic);
                   pic.Tag= "" + mydataSet.Tables["test_user"].Rows[i]["picture"].ToString() + "";
                    pic.Size = new System.Drawing.Size(139, 102);
                    pic.Location = new System.Drawing.Point(1, loca);
                    pic.Image = imageList1.Images[i];
                    pic.Click += pic_Click;
                    loca += 108;
                }
      

  2.   

    给到picturebox的tag不就行了?干嘛要绕个道呢。ImageList.Images[int]获取的是原始图像的副本,自然是取不到Tag了。ImageList实际是一长很大的内存位图,也就是把add进去的图片绘制在自己上面,记录位置。所以并不会存储所有Image对象,而只是记录了Image对象的数据部分。