我有一个ListView框,其中包含5列和最后一列 列存储图像的路径。我的愿望是访问图像路径和 将它发送到listView1_MouseClick事件处理程序。我尝试了一些选项,但由于我对事件处理程序的了解有限,没有一个能够产生预期的结果。非常感谢有人能提前帮助我完成我的任务和感谢!
以下是两个程序: -
public string GetImageDetailsHandler(object sender, EventArgs e){
return(listView1.SelectedItems[0].SubItems[4].ToString());
}
private void listView1_MouseClick(object sender, MouseEventArgs e){
ImageForm image = new ImageForm();
MouseClick += (sender, e) => { GetImageDetailsHandler(sender, e); };
image.pictureBox1.Image = Image.FromFile(GetImageDetailsHandler);
image.ShowDialog();
}
答案 0 :(得分:1)
单击MouseClick
时,将引发事件listView
。然后将执行方法listView1_MouseClick
。你需要的只是拉出这个方法中的路径:
private void listView1_MouseClick(object sender, MouseEventArgs e)
{
ImageForm image = new ImageForm();
string path = listView1.SelectedItems[0].SubItems[4].ToString()
image.pictureBox1.Image = Image.FromFile(path);
image.ShowDialog();
}
详细的问题描述:
1)当您在此行中注册MouseClick事件时:
MouseClick += (sender, e) => { GetImageDetailsHandler(sender, e); };
您实际注册了整个MouseClick
的{{1}}事件!因此,每次单击GUI上的某个位置时,都会调用Form
。
2)虽然你在GetImageDetailsHandler
中有一个返回值,但你不会抓到任何地方。所以你的价值就会消失。如果您真的想要使用事件的返回值,请查看this post。但要实现这一目标,您需要自己开火!在你的情况下情况并非如此。这些事件由控件引发!