c# - 如何处理循环内动态创建的控件的click事件

时间:2017-02-16 16:09:33

标签: c# winforms user-interface dynamic controls

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

我在动态创建的控件上搜索了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
                } 

对此有任何帮助和建议都很棒,谢谢!

1 个答案:

答案 0 :(得分:3)

添加处理程序:

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") { /* ... */ }
}