如何同时调用多个按钮

时间:2011-05-21 12:56:51

标签: c# .net winforms button

我在同时调用多个按钮时遇到问题,因为每个按钮的工作过程不同,有78个以上的文件夹。

我想在一个名为button4的按钮中同时调用所有按钮。现在它只调用button1而不是button2。

有没有办法同时调用这些按钮?

我的代码是:

    private void button4_Click_1(object sender, EventArgs e)
    {

        button1.PerformClick();
        button2.PerformClick();


    }

先谢谢。

4 个答案:

答案 0 :(得分:4)

您通常不应对其他按钮执行UI样式的点击以调用其行为。

只需调用您想要“点击”按钮的相应事件处理方法即可。

示例代码:

private void button4_Click_1(object sender, EventArgs e)
{
   button1_Click_1(null, EventArgs.Empty);
   button2_Click_1(null, EventArgs.Empty);
   // and so on
}

答案 1 :(得分:3)

你应该重构其他事件来调用命名良好的方法。

假设button1做了一些初始化;它应该是这样的:

private void button1_Click(object sender, EventArgs e)
{
    Initialize();
}

说按钮2确定了初始化;它应该是这样的:

private void button2_Click(object sender, EventArgs e)
{
    FinalizeInitialization();
}

然后如果button4做了所有这些;它应该是这样的:

private void button4_Click(object sender, EventArgs e)
{
    Initialize();
    FinalizeInitialization();

    WhateverElseButton4ShouldDo();
}

答案 2 :(得分:1)

在大多数情况下,您根本不应该致电PerformClick()。相反,您应该调用事件处理程序调用的相同方法。因此,如果单击按钮3应该表现为单击按钮1然后按钮2,则应该具有以下代码:

private void button1_Click(object sender, EventArgs e)
{
    SomeAction();
}

private void button2_Click(object sender, EventArgs e)
{
    AnotherAction();
}

private void button3_Click(object sender, EventArgs e)
{
    SomeAction();
    AnotherAction();
}

(作为旁注,您的按钮应具有描述性名称,而不是button1等。)

答案 3 :(得分:0)

我们无法说出那些按钮点击处理程序的功能。所以很难说出错了什么。但请尝试将代码从按钮单击处理程序移开。创建一个包含按钮单击后应运行的代码的类。然后从按钮单击处理程序中调用此类的方法。调试和测试该代码会更容易。

    public class ButtonActions
    {
        public void DoSomething() {...}
        public void DoSomething2() {...}
        public void DoSomething3() {...}

        public void DoAll()
        {
            DoSomething();
            DoSomething2();
            DoSomething3();
        }

    }

    // here instead of clicking all buttons call method that does it all
    protected void button_Click(object sender, EventArgs e)
    {
        var buttonActions = new ButtonActions();
        buttonActions.DoAll();
    }