我正在使用Visual C#2010创建Windows窗体应用程序。
我有20个名为button1,...,button20的按钮和20个名为label1,...,label20的标签。如何更改label1的文本以响应单击button1,并且类似于每个按钮标签对而没有20个单独的事件处理函数?
答案 0 :(得分: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,将你的按钮和标签收缩包装成一个整齐的包。
答案 1 :(得分:1)
当您要反复使用一组控件时,可以更轻松地制作将它们组合在一起的自定义用户控件。
因此,在这种情况下,使用标签和按钮创建一个新的用户控件。在按钮的onclick处理程序中,将label.Text更改为您想要的任何内容。建立你的项目。
将新创建的用户控件添加到主窗体20次。由于按钮已经与各自的标签相关联,因此您不需要为每个按钮分别设置单独的处理程序。
(请记住,您现在有20个名为userControl1,userControl2等的控件...所以如果您需要对其内部内容执行任何其他操作,则需要执行其他处理。但是,为了这个示例, ,你不必担心这个。)
答案 2 :(得分:0)
您可以将所有事件订阅到一个处理程序并检查第一个参数'sender'。发件人应该是按钮,您可以查看其ID。