使用按钮2中按钮1的事件

时间:2011-11-03 08:32:17

标签: c# events button

我有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);
}

- 编辑 -

我正在使用一个类图,它没有显示任何其他方法会/应该这样做。需要坚持类图。

3 个答案:

答案 0 :(得分:7)

您有几个选择。

  1. 将两个事件中的代码放入自己的方法中并调用它。
  2. 制作一个_click方法并将其设置为按钮的事件处理程序。
  3. 您可以从button2_Click 致电button1_click(我建议不要这样做)

  4. 1

    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();
    }
    

    2

    // 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);
    }
    

    3

    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);
}