我正在使用C#。
1 - 从数据库中检索多个图像路径。的(完成)
OpenConnection();
DataTable dtp = new DataTable();
SqlCommand adp1 = new SqlCommand("Select pictures_path from Folder_Pix" , sqlcon);
SqlDataReader sdr = adp1.ExecuteReader();
2 - 然后在listview上设置图像。的(完成)
imglist = new ImageList();
while (sdr.Read())
{
Bitmap img = new Bitmap(sdr[0].ToString());
imglist.Images.Add(img);
this.listView1.View = View.LargeIcon;
imglist.ImageSize = new Size(60, 50);
this.listView1.LargeImageList = imglist;
}
for (int j = 0; j < imglist.Images.Count; j++)
{
ListViewItem item = new ListViewItem();
item.ImageIndex = j;
this.listView1.Items.Add(item);
}
*其中sdr是SqlDataReader。
3-双击检索所选图像。的(错误)
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
Form2 obj = new Form2();
foreach (Image img in listView1.SelectedItems[0].ImageList.Images)
{
obj.pictureBox1.Image = img;
MessageBox.Show("pause");
obj.Show();
}
}
每当我点击图像时,它都会返回所有图像-1。
在我的情况下,他们将4个图像添加到ListView。每当我点击图像时,Form2会打开3次,显示第2,第3和第4张图像!
我测试了FocusedItem而不是SelectedItems.But结果是相同的。
我做错了什么?我尽力了。我从8小时起就一直在努力。
答案 0 :(得分:1)
在foreach
中,您正在遍历整个ImageList
而不是SelectedItem
。基本上,list_img.SelectedItems[0].ImageList
是对整个ImageList
的引用,而不是特定的图像。图像由ImageIndex
指定。试试这个:
private void list_img_SelectedIndexChanged(object sender, EventArgs e)
{
if (list_img.SelectedItems.Count > 0)
{
var item = list_img.SelectedItems[0];
var img = item.ImageList.Images[item.ImageIndex];
var f = new Form2();
f.pictureBox1.Image = img;
MessageBox.Show("pause");
f.Show();
}
}