我有2个按钮。我试图将按钮1中的事件用于按钮2,这样他们都可以做同样的事情 因此,通过单击2,按钮1也会被单击。我实际上是从菜单条项目这样做,但我想它有相同的原则。我只是不想有重复的代码。我认为button1.Click()可以工作,但显然它没有。我怎么能这样做?
简化示例:
private void button1_Click(object sender, EventArgs e)
{
count += 1;
label1.Text = Convert.ToString(count);
}
private void button2_Click(object sender, EventArgs e)
{
count += 1;
label1.Text = Convert.ToString(count);
}
- 编辑 -
我正在使用一个类图,它没有显示任何其他方法会/应该这样做。需要坚持类图。
答案 0 :(得分:7)
您有几个选择。
button2_Click
致电button1_click
(我建议不要这样做)。private IncrementAndDisplay()
{
count += 1;
label1.Text = Convert.ToString(count);
}
private void button1_Click(object sender, EventArgs e)
{
IncrementAndDisplay();
}
private void button2_Click(object sender, EventArgs e)
{
IncrementAndDisplay();
}
// Change both button's clicked events to use this method in the IDE, or in code.
private void button_Click(object sender, EventArgs e)
{
count += 1;
label1.Text = Convert.ToString(count);
}
private void button1_Click(object sender, EventArgs e)
{
button2_Click(sender, e); // Bad!
}
private void button2_Click(object sender, EventArgs e)
{
count += 1;
label1.Text = Convert.ToString(count);
}
答案 1 :(得分:2)
无论button1放在一个单独的方法中,并从两个按钮调用该方法, 最好将代码分开,然后不要复制任何内容。
您提供的内容会在不应存在的按钮之间产生不自然的依赖关系。
关于你的类图,如果它是私有方法,那么它应该无关紧要。
答案 2 :(得分:1)
您应该使用单独的函数/方法来处理操作,然后让两个按钮处理程序调用该函数:
private void button1_Click(object sender, EventArgs e)
{
doTheThing();
}
private void button2_Click(object sender, EventArgs e)
{
doTheThing();
}
private void doTheThing()
{
count += 1;
label1.Text = Convert.ToString(count);
}