c#-如何处理在循环中动态创建的控件的单击事件

c#-如何处理在循环中动态创建的控件的单击事件,c#,winforms,user-interface,dynamic,controls,C#,Winforms,User Interface,Dynamic,Controls,我正在寻找一些关于如何将单击事件处理程序添加到在循环中动态创建的标签的建议 我在动态创建的控件上搜索了click事件处理程序,但它总是返回不在数组中的单个控件 代码示例: //create an array of 16 labels Label[] label = new Label[16]; //loop through the array of labels fo

我正在寻找一些关于如何将单击事件处理程序添加到在循环中动态创建的标签的建议

我在动态创建的控件上搜索了click事件处理程序,但它总是返回不在数组中的单个控件

代码示例:

                //create an array of 16 labels
                Label[] label = new Label[16];

                //loop through the array of labels
                for (int i = 0; i < label.Length; i++)
                {
                    label[i]        = new Label();              //create new label
                    label[i].Name   = "lbl" + i.ToString();     //give the label a name
                    label[i].Text   = "label " + i.ToString();  //give the label text
                } 
//创建一个包含16个标签的数组
标签[]标签=新标签[16];
//循环遍历标签数组
for(int i=0;i
任何关于这方面的帮助和建议都将非常好,谢谢

添加处理程序:

label[i].Click += HandleLabelClick;

void HandleLabelClick(object sender, EventArgs e)
{
    // ...
}
请注意,您可以使用
sender
参数确定单击了哪个标签:

void HandleLabelClick(object sender, EventArgs e)
{
    var label = (Label) sender;
    if (label.Text == "this or that") { /* ... */ }
}
添加处理程序:

label[i].Click += HandleLabelClick;

void HandleLabelClick(object sender, EventArgs e)
{
    // ...
}
请注意,您可以使用
sender
参数确定单击了哪个标签:

void HandleLabelClick(object sender, EventArgs e)
{
    var label = (Label) sender;
    if (label.Text == "this or that") { /* ... */ }
}

关于发送者参数也值得一提。非常简单!谢谢,伙计,我今天就试试看!关于发送者参数也值得一提。非常简单!谢谢,伙计,我今天就试试看!