仅从列表视图中检索所选图像

时间:2015-02-26 16:17:36

标签: c# image listview selecteditem

我正在使用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小时起就一直在努力。

1 个答案:

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