仅从列表视图中检索选定的图像
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();
}
}
我正在使用 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();
}
}