我的表单中有很多控件。例如,一个面板中的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功能吗?
答案 0 :(得分:2)
为面板上的所有标签添加相同的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);
}
答案 1 :(得分:1)
找到所有控件然后只需通过代码添加处理程序;
List<Control> controls = GetAllMyControls();
foreach(Control control in controls)
{
control.OnClick += (o, e) => { ChangeToTextBox(o); }
}
对于web和winform解决方案,语法应该非常相似。
答案 2 :(得分:1)
使用以下方法可以很容易地实现:请尝试一下,
1)转到Windows窗体设计器,然后单击第一个Label控件以将其选中。然后在单击其他每个标签时按住CTRL键以选择它们。确保选择了每个标签。
2)然后转到“属性”窗口中的“事件”页面。向下滚动到Click事件,然后在框中键入label_Click
3)按ENTER。 IDE将一个名为label_Click()的Click事件处理程序添加到代码中,并将其挂钩到每个标签。
private void label_Click(object sender, EventArgs e)
{
ChangeToTextbox(sender);
}