如何使用控件数组获取C#中给定对象的数组索引?

Ada*_*vis 1 .net c# controls control-array event-handling

我正在动态地向表单添加一堆控件.每个控件都调用相同的方法,在该方法中,我需要知道执行该操作的控件的数组索引.

CheckBox[] myCB = new CheckBox[100];
int i;
for (i = 0; i < 100; i++)
{
    myCB[i] = new CheckBox();
    myCB[i].Text = "Clicky!";
    myCB[i].Click += new System.EventHandler(dynamicbutton_Click);
    tableLayoutPanel1.Controls.Add(myCB[i]);
}

private void dynamicbutton_Click(Object sender, System.EventArgs e)
{
    label1.Text = sender.???array index property???.ToString();
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我点击myCB[42] label1将读取"42"当然,如果有一种更简单的方法来处理动态控件我会很感激指针.

SLa*_*aks 5

private void dynamicbutton_Click(Object sender, System.EventArgs e)
{
    label1.Text = Array.IndexOf(myCB, (CheckBox)sender).ToString();
}
Run Code Online (Sandbox Code Playgroud)

  • 这是最简单的答案,尽管对于大量复选框效率不高.为了获得更好的性能,最好使用复选框的Tag属性. (2认同)