как вызвать несколько кнопок одновременно - PullRequest
0 голосов
/ 21 мая 2011

У меня проблема с одновременным вызовом нескольких кнопок, потому что каждая кнопка работает по-разному, существует более 78 папок.

Я хочу вызвать все кнопки одновременно в однойкнопка называется button4.Теперь он вызывает только button1 и не работает для button2.

Можно ли одновременно вызывать эти кнопки?

Мой код:

    private void button4_Click_1(object sender, EventArgs e)
    {

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


    }

Заранее спасибо.

Ответы [ 4 ]

4 голосов
/ 21 мая 2011

Как правило, вы не должны выполнять щелчки в стиле пользовательского интерфейса на других кнопках, чтобы вызвать их поведение.

Просто вызовите соответствующие методы обработки событий для кнопок, которые вы хотите «нажать».

пример кода:

private void button4_Click_1(object sender, EventArgs e)
{
   button1_Click_1(null, EventArgs.Empty);
   button2_Click_1(null, EventArgs.Empty);
   // and so on
}
3 голосов
/ 21 мая 2011

Вы должны изменить рефакторинг других событий для вызова методов с именами.

Скажите, что button1 выполняет некоторую инициализацию; это должно выглядеть так:

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

Скажите, что button2 завершает эту инициализацию; это должно выглядеть так:

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

Тогда, если button4 сделает все это; это должно выглядеть так:

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

    WhateverElseButton4ShouldDo();
}
1 голос
/ 21 мая 2011

В большинстве случаев вам вообще не следует звонить 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 и т. П.)

0 голосов
/ 21 мая 2011

Мы не можем сказать, что делают эти обработчики нажатий кнопок.Так что сложно сказать что не так.Но попробуйте отодвинуть код от обработчиков нажатий кнопок.Создайте некоторый класс, содержащий код, который должен запускаться после нажатия кнопки.Затем вызовите методы этого класса из обработчиков нажатий кнопок.Этот код будет легче отлаживать и тестировать.

    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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...