【问题标题】:Retrieving selected image only from listview仅从列表视图中检索选定的图像
【发布时间】:2015-02-26 16:17:36
【问题描述】:

我正在使用 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();
        }

    }

当我点击一张图片时,它会返回所有的 image-1。

在我的例子中,它们是添加到 ListView 中的 4 张图片。每当我点击一张图片时,Form2 会打开 3 次,分别显示第二张、第三张和第四张图片!

我测试的是 FocusedItem 而不是 SelectedItems。但结果是一样的。

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

【问题讨论】:

  • 你有一个 foreach 循环并且没有测试当前索引
  • for循环呢?

标签: c# image listview selecteditem


【解决方案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();
    }
}

【讨论】:

  • 错误:不包含 FirstOrDefault() 的定义。
  • 好的,该集合似乎不支持 Linq。我会编辑答案。
猜你喜欢
  • 1970-01-01
  • 2014-05-25
  • 2011-08-17
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 2012-08-06
相关资源
最近更新 更多