我创建了一个循环文件夹并检索每个图像文件并在表单上绘制图片框的函数。 这是功能:
private void Create_Controls(string Img_path)
{
PictureBox p = new PictureBox();
p.Size = new Size(138, 100);
p.Location = new Point(6, 6);
p.BackgroundImage = Image.FromFile(Img_path);
p.BackgroundImageLayout = ImageLayout.Stretch;
this.Controls.Add(p);
}
所以我需要做的是:每当我点击表单上的任何图片框时,都会弹出一个带有图像文件路径的消息。
所以我考虑添加一个自定义事件:
p.Click += delegate { Pop_Up(); };
和
private void Pop_Up()
{
/* POP UP MESSAGE WITH Picturebox image file path*/
}
答案 0 :(得分:4)
您需要使用PictureBox的属性ImageLocation。该属性获取或设置要在PictureBox中显示的图像的路径或URL。
答案 1 :(得分:4)
请执行以下操作:
p.Click += new EventHandler(Pop_Up);
...
private void Pop_Up(object sender, EventArgs e)
{
var pb = sender as PictureBox;
if(pb != null)
MessageBox.Show(pb.ImageLocation);
}
答案 2 :(得分:1)
您可以使用Tag
属性。
private void Create_Controls(string Img_path)
{
PictureBox p = new PictureBox();
p.Size = new Size(138, 100);
p.Location = new Point(6, 6);
p.Tag = Img_path;
p.BackgroundImage = Image.FromFile(Img_path);
p.BackgroundImageLayout = ImageLayout.Stretch;
this.Controls.Add(p);
}
private void Pop_Up()
{
MessageBox.Show(p.Tag);
}
有关此Go here的更多信息。
答案 3 :(得分:1)
然后,与HatSoft所说的一样,更改您的Pop_up()
方法,如:
private void Pop_Up(object sender, EventArgs e)
{
MessageBox.Show(((PictureBox)sender).ImageLocation);
}
但也许更优雅,并检查它是否确实是PictureBox
等。