-3

我正在 Visual C# 2010 中创建一个 Windows 窗体应用程序。

我有二十个名为 button1、...、button20 的按钮和二十个名为 label1、...、label20 的标签。如何更改 label1 的文本以响应对 button1 的单击,并且与每个按钮标签对类似,而无需 20 个单独的事件处理函数?

4

3 回答 3

7

看在上帝的份上为什么!!!

但实际上,您可以使用键控到按钮的字典,例如:

Dictionary<Button,Label> dict = new Dictionary<Button,Label>();

    dict.Add(button1,label1);
    ...

然后你可以这样做:

private void ButtonClick(object sender, EventArgs e)
{
    Label label = dict[(Button)sender];
    label.Text = "Hello";
}

然后所有按钮都可以使用相同的点击处理程序。

您也可以类似地使用Button.Tag该点并将其指向每个标签。

但是,我认为更好的解决方案是开发一个自定义的 UserControl,将您的按钮和标签收缩包装到一个整洁的包中。

于 2013-02-21T17:04:39.573 回答
1

当您要反复使用一组控件时,创建一个将它们合并在一起的自定义用户控件会更容易。

所以在这种情况下,创建一个带有标签和按钮的新用户控件。在按钮的 onclick 处理程序中,将 label.Text 更改为您想要的任何内容。构建您的项目。

将新创建的用户控件添加到主窗体 20 次。由于按钮已经与它们各自的标签相关联,因此您不需要为每个按钮设置单独的处理程序。

(请记住,您现在有 20 个名为 userControl1、userControl2 等的控件……因此,如果您需要对它们的内部内容做任何其他事情,则需要进行额外的处理。但为了这个示例,您不需要不必担心这个。)

于 2013-02-21T17:27:13.137 回答
0

您可以将所有事件订阅到一个处理程序并检查第一个参数“发件人”。发件人应该是按钮,你可以检查它的ID。

于 2013-02-21T17:04:38.230 回答