开发者

how to call multiple buttons at the same time

I am having a problem in calling multiple buttons at the same t开发者_运维问答ime because each buttons works a different process there are more than 78 folders.

I want to call all the buttons at the same time in a single button called button4. Now it's calling button1 only and not working for button2.

Is there any way to call these buttons at the same time?

My code is:

    private void button4_Click_1(object sender, EventArgs e)
    {

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


    }

Thanks in Advance.


You should in general not perform UI-style clicks on other buttons in order to invoke their behaviour.

Just call the respective event handling methods of the buttons you would like to "click".

example code:

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


You should refactor the other events to call well-named methods.

Say button1 does some initialization; it should look like this:

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

Say button2 finalizes that intialization; it should look like this:

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

Then if button4 does all of this; it should look like this:

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

    WhateverElseButton4ShouldDo();
}


Under most circumstances, you shouldn't call PerformClick() at all. Instead, you should call the same methods your event handlers call. So, if clicking button 3 should behave as click clicking button 1 and then button 2, you should have code like this:

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

(As a side note, your buttons should have descriptive names, not button1 and the like.)


We can't say what those button click handlers do. So it's hard to say what's wrong. But try moving the code away from button click handlers. Create some class that contains code that should run after button click. Then call this class' methods from button click handlers. It will be easier to debug and test that code.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜