【问题标题】:c# - how can I handle the click event of controls created dynamically within a loopc# - 如何处理循环内动态创建的控件的点击事件
【发布时间】:2017-07-05 20:48:21
【问题描述】:

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

我已经在动态创建的控件上搜索了单击事件处理程序,但这总是会返回不在数组中的单个控件。

代码示例:

                //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
                } 

任何关于这方面的帮助和建议都会很棒,谢谢!

【问题讨论】:

标签: c# winforms user-interface dynamic controls


【解决方案1】:

添加处理程序:

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

【讨论】:

  • 关于sender参数也值得说一下。
  • 很简单!谢谢大佬,我今天去试试!
猜你喜欢
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多