繁体   English   中英

将点击事件添加到许多控件

[英]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);
}

参考: http : //msdn.microsoft.com/en-us/library/dd553231.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM