/ / C # -Index der PictureBox in FlowLayoutPanel - c #

C # Index von PictureBox in FlowLayoutPanel - c #

Ich habe eine Liste mit Bildern von der Datenbank abrufen und im Flowlayoutpanel anzeigen.

int i = 1;
byte[] imgData;
SqlConnection con = new SqlConnection(localdb);
con.Open();
SqlCommand cmd = new SqlCommand("SELECT image FROM Image", con);
SqlDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())
{
imgData = (byte[])(rdr["image"]);
using (MemoryStream ms = new MemoryStream(imgData))
{
System.Drawing.Image photo = Image.FromStream(ms);
pbName[i] = new PictureBox();
pbName[i].Image = photo;
pbName[i].SizeMode = PictureBoxSizeMode.CenterImage;
pbName[i].Parent = this.flowLayoutPanel1;
pbName[i].Click += new EventHandler(butns_Click);
i++;
}
}

Da die Picturebox automatisch im Flowlayoutpanel generiert wird. Wer weiß, wie man den Index der Bildbox im Flowlayoutpanel durch Klicken auf die Bildbox findet? Vielen Dank.

private void butns_Click(object sender, EventArgs e)
{
//code
}

Antworten:

1 für die Antwort № 1

Sie erhalten den Index aus der Auflistung des übergeordneten Steuerelements.
Seien Sie vorsichtig, der Index hängt von allen Steuerelementen in der Sammlung ab.

private void butns_Click(object sender, EventArgs e)
{
var pictureBox = (PictureBox)sender;
int index = flowLayoutPanel1.Controls.GetChildIndex(pictureBox);
}

Eine andere Möglichkeit ist die Verwendung der Tag-Eigenschaft.

pbName[i].Tag = i; // puts index to tag
private void butns_Click(object sender, EventArgs e)
{
var pictureBox = (PictureBox)sender;
int index = (int)pictureBox.Tag;
}