[英]add click event to many control
我的表单中有很多控件。 例如,一个面板中有120个标签。 我想当用户单击每个标签时,只需使用相同的参数调用相同的函数。 现在我这样使用:
private void label67_Click(object sender, EventArgs e)
{
ChangeToTextbox(sender);
}
private void label66_Click(object sender, EventArgs e)
{
ChangeToTextbox(sender);
}
private void label65_Click(object sender, EventArgs e)
{
ChangeToTextbox(sender);
}
private void label64_Click(object sender, EventArgs e)
{
ChangeToTextbox(sender);
}
现在,当用户单击任何标签时,我可以通过简便的方法来调用ChangeToTextbox函数吗?
为面板上的所有标签添加相同的OnClick处理程序:
private void Form1_Load(object sender, EventArgs e)
{
panel1.Controls.OfType<Label>().ToList().ForEach(l => l.Click += label_Click);
}
private void label_Click(object sender, EventArgs e)
{
ChangeToTextbox(sender);
}
找到所有控件,然后通过代码添加处理程序;
List<Control> controls = GetAllMyControls();
foreach(Control control in controls)
{
control.OnClick += (o, e) => { ChangeToTextBox(o); }
}
Web和Winform解决方案的语法都应该非常相似。
使用以下方法可以轻松实现:请尝试一下,
1)转到Windows Forms Designer,然后单击第一个Label控件将其选中。 然后,在按住CTRL键的同时单击其他每个标签以选择它们。 确保选择了每个标签。
2)然后转到“属性”窗口中的“事件”页面。 向下滚动到Click事件,然后在框中键入label_Click
3)按ENTER。 IDE将一个名为label_Click()的Click事件处理程序添加到代码中,并将其挂接到每个标签上。
private void label_Click(object sender, EventArgs e)
{
ChangeToTextbox(sender);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.