按钮单击“事件泛化”

时间:2016-11-17 15:16:03

标签: c# button windows-forms-designer

当我单击按钮时,如何在列表框中获取按钮的文本而不定义所有按钮的事件。如何概括它。

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以做的是以编程方式遍历表单上的按钮,并为每个按钮添加事件处理程序。

将它放在表单的构造函数中:

foreach (var ctrl in this.Controls)
{
    if (ctrl is Button)
    {
        ((Button) ctrl).Click += MainForm_Click;
    }
}

这是你的事件处理程序:

void MainForm_Click(object sender, EventArgs e)
{
    listBox1.Items.Add(((Button) sender).Text);
}

Equalsk的建议很好:如果您的表单上有其他按钮,您不希望参与此行为,您可以放置​​所做的按钮想要在您的表单上的面板或其他控件中。然后,您只需将构造函数中的foreach更改为:

foreach (var ctrl in this.panel1.Controls)

答案 1 :(得分:0)

在代码隐藏中,您使用for循环为所有按钮分配相同的事件处理程序。该事件处理程序将获得sender作为第一个参数传递,这是您单击的按钮。对Button进行类型转换,您可以访问其文本。