0

作为我学校项目的一部分,我正在制作一个随机生成的 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”的消息框,但我希望能够识别每个图片框。提前感谢您的帮助!

4

0 回答 0