仅从列表视图中检索选定的图像

Retrieving selected image only from listview

我正在使用 C#。

1-从数据库中检索多个图像路径。 (完成)

        OpenConnection();
        DataTable dtp = new DataTable();
        SqlCommand adp1 = new SqlCommand("Select pictures_path from Folder_Pix" , sqlcon);
        SqlDataReader sdr = adp1.ExecuteReader();

2-然后在列表视图上设置该图像。 (完成)

        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();
        }

    }

每当我点击一张图片时,它 returns all image-1.

在我的例子中,它们是添加到 ListView.Whenever 的 4 张图片我点击一张图片,Form2 打开 3 次,显示第 2、3、4 张图片!

我测试了 FocusedItem 而不是 SelectedItems.But 结果是一样的。

我做错了什么?我尝试了所有可能的方法。自 8 小时以来,我一直在努力。

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();
    }
}