作为我学校项目的一部分,我正在制作一个随机生成的 2D 平铺地图。我已经动态地制作了一个图片框数组来存储各个图块,并且我希望能够让用户单击一个图片框,其中一个事件仅针对该特定图片框引发,但我遇到了麻烦。(我的地图是 40x40,可以生成 1600 个图片框,我确实意识到这确实效率低下 :))
current_mapXY[0] = 20; //these are the sizes in x and y of the pictureboxes
current_mapXY[1] = 20;
for (int i = 0; i < 40; i++)
{
for (int i2 = 0; i2 < 40; i2++)
{
map[i, i2] = new PictureBox();
map[i, i2].SizeMode = PictureBoxSizeMode.StretchImage;
map[i, i2].Location = new System.Drawing.Point(current_mapXY[0] + (nextxy * i), current_mapXY[1] + (nextxy * i2));
map[i, i2].Size = new System.Drawing.Size(current_mapXY[0], current_mapXY[1]);
this.Controls.Add(map[i, i2]);
progressBar1.Increment(1);
}
}
然后在纹理化之后,我试图为每个图片框抛出一个事件。
for (int i = 0; i < 40; i++)
{
for (int i2 = 0; i2 < 40; i2++)
{
map[i, i2].Click += (a, b) => pic_click(sender, e, (i + "." + i2));
}
}
private void pic_click(object sender, EventArgs e, string xy)
{
MessageBox.Show(xy);
}
当我在运行时单击图片框时会发生什么,是带有“40.40”的消息框,但我希望能够识别每个图片框。提前感谢您的帮助!