0

1)我开发ac#用户控件。在那个控件中,我有一个按钮。当用户在运行时单击按钮时,会在前一个图片框旁边创建一个新控件(例如图片框)。

我是这样做的:

PictureBox pb = new PictureBox();
pb.Location = new Point(oldPb.X, oldPb.Y + 100);
pb.Size = oldPb.Size;
Controls.Add(pb);

问题是,我希望能够管理所有创建的项目。例如,我想索引图片框,然后从用户那里获取一个数字并更改想要的照片框的照片。例如:

photoBox3.Image = .......

我该怎么做?

2)我希望能够识别用户何时单击其中一个照片框并对所选照片框执行操作。我怎样才能做到这一点?

谢谢

4

2 回答 2

1
List<PictureBox> pictureBoxes = new List<PictureBox>();

for (int i = 0; i < 10; i++)
{
    PictureBox pb = new PictureBox();
    pb.Location = new Point(.....);
    pb.Size = ......;
    pb.Click += pb_Click;
    Controls.Add(pb);
    pictureBoxes.Add(pb);
}

pictureBoxes[3].Image=..... //Use like this

void pb_Click(object sender, EventArgs e)
{
    PictureBox pb = sender as PictureBox;
    //Do work
}
于 2012-10-14T12:17:41.850 回答
0

您可以使用TagPictureBox 的属性来存储某种索引。

然后,您可以让所有 PictureBoxes 响应单击事件:

pb.Click += new EventHandler(picturebox_Click);

并检查那里的标签

private void picturebox_Click(object sender, EventArgs e)
{
   PictureBox pb = sender as PictureBox;
   if (pb != null)
   {
     string s = pb.Tag
   }
}
于 2012-10-14T12:18:03.740 回答