如何在动态创建的picturebox数组上抛出事件

时间:2016-10-07 11:18:30

标签: c# dynamic eventhandler form-control

我正在制作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;的消息框,但我希望能够识别每个图片框。 感谢您提前提供任何帮助!

0 个答案:

没有答案