我正在制作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);
}
当我在运行时单击一个图片框时会发生什么,是一个带有&#34; 40.40&#34;的消息框,但我希望能够识别每个图片框。 感谢您提前提供任何帮助!