2012-07-30 123 views
1

我创建了一个循环文件​​夹并检索每个图像文件并在窗体上绘制一个picturebox的函数。 下面是函数:C#:获取picturebox的文件路径onclick

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); 
    } 

所以我需要做的是:每当我在的形式,与图像文件路径的消息弹出任何PictureBox的点击。

所以我认为有关添加自定义事件:

p.Click += delegate { Pop_Up(); }; 

private void Pop_Up() 
    { 
     /* POP UP MESSAGE WITH Picturebox image file path*/ 
    } 

回答

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); 
} 
+0

非常感谢,它帮助和工作。 – 2012-07-30 13:00:51

4

您需要使用该图片框的属性ImageLocation。该属性获取或设置要在PictureBox中显示的图像的路径或URL。

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

1

然后沿着什么HatSoft说,改变你的Pop_up()方法,如:

private void Pop_Up(object sender, EventArgs e) 
    { 
     MessageBox.Show(((PictureBox)sender).ImageLocation); 
    } 

但也许,如果它是更优雅和检查了一下确实是一个PictureBox