Search code examples
c#picturebox

C# - Click event sending a value


I'm using a for-loop to add values into an array of PictureBox and binding a click event to each one. I'm looking for a way of getting the data of a PictureBox after clicking on it. Since it's an array, I was thinking of sending the value of the loop counter, which would identify which one was clicked.

My code looks like this:

PictureBox[] picboxes = new PictureBox[result];
for (int i = 0; i < results; i++)
{
    picboxes[i] = new PictureBox();
    picboxes[i].ImageLocation = @FormIni.RetRes((i * 5) + 5 + i);
    picboxes[i].Click += new System.EventHandler(PictureBoxes_Click);
}

private void PictureBoxes_Click(object sender, EventArgs e)
{
    label1.Text = "here I need the value of the picboxes[i] image location";
}

It can seem stupid, but I thought of something like:

picboxes[i].Click += new System.EventHandler(PictureBoxes_Click(i))

and

private void PictureBoxes_Click(object sender, EventArgs e, int i)

In short: when I click in a PictureBox created in a array via code, how do I get its values (inside the click event handler)?

EDIT!

Sorry for finding it only after making this question, but I've found this solution and it may apply to my case, right?


Solution

  • try do do this

    PictureBox[] picboxes = new PictureBox[result];
    for (int i = 0; i < results; i++)
    {
        picboxes[i] = new PictureBox();
        picboxes[i].Name = (i+1).ToString();
        picboxes[i].ImageLocation = @FormIni.RetRes((i * 5) + 5 + i);
        picboxes[i].Click += new System.EventHandler(PictureBoxes_Click);
    }
    
    private void PictureBoxes_Click(object sender, EventArgs e)
    {
        PictureBox p = (PictureBox)sender;
        string j = p.Name;
        label1.Text = j;
    }