1

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

    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

4 回答 4

5

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

于 2012-07-30T12:44:30.290 回答
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);
}
于 2012-07-30T12:51:32.833 回答
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);
}

有关此的更多信息,请点击此处

于 2012-07-30T12:45:28.740 回答
1

然后按照 HatSoft 所说的,改变你的Pop_up()方法,比如:

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

但也许更优雅一点,并检查它是否确实是PictureBox等。

于 2012-07-30T12:46:54.080 回答