简体   繁体   中英

How to write dynamic pictureBox Click event in C#?

private void button1_Click(object sender, EventArgs e)
{
        PictureBox dynamicPicture1 = new PictureBox();
        dynamicPicture1.Tag = i;
        dynamicPicture1.Location = new Point(x, y);
        dynamicPicture1.Name = "pictureBox" + i;
        dynamicPicture1.Size = new System.Drawing.Size(30, 27);
        dynamicPicture1.ImageLocation = 
            "C:\\Users\\Newfolder\\Downloads\\x`enter code here`ryrvc.jpg";
        panel1.Controls.Add(dynamicPicture1);

}

You should put the Method name of your event handler :

dynamicPicture1.Click += dynamicPicture1_Click; //note the name here

And define the event handler somewhere:

void dynamicPicture1_Click(object sender, EventArgs e) {
    throw new NotImplementedException(); //default not implemented
}

The name of the event handler must match each other...

Try this updated code.

private void button1_Click(object sender, EventArgs e)
    {
        int s = 4;
        int x = 0;
        int y = 0;
        for (int i = 0; i < s; i++)
        {
            if (i == 0)
            {
                x = 38;
                y = 60;
            }
            else
            {
                y += 50;
            }

            PictureBox dynamicPicture1 = new PictureBox();
            dynamicPicture1.Tag = i;
            dynamicPicture1.Location = new Point(x, y);
            dynamicPicture1.Name = "pictureBox" + i;
            dynamicPicture1.Size = new System.Drawing.Size(30, 27);
            dynamicPicture1.ImageLocation = @"C:\Users\nxa00960\Downloads\abc.jpg";
            panel1.Controls.Add(dynamicPicture1);

            dynamicPicture1.Click += dynamicPicture1_Click;
        }
    }

    void dynamicPicture1_Click(object sender, EventArgs e)
    {
        var pictureBox = sender as PictureBox;

        switch (pictureBox.Name)
        {
            case "pictureBox0":
                //do something
                break;

            case "pictureBox1":
                //do something
                break;

            case "pictureBox2":
                //do something
                break;

            case "pictureBox3":
                //do something
                break;

            default:
                break;
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM