C#:获取picturebox onclick的文件路径

时间:2012-07-30 12:41:15

标签: c# winforms user-interface user-controls picturebox

我创建了一个循环文件​​夹并检索每个图像文件并在表单上绘制图片框的函数。 这是功能:

    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*/
    }

4 个答案:

答案 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等。