Ramakrishna Alla Ответов: 5

Как вызвать одно событие нажатия кнопки в другом


Как вызвать одно событие нажатия кнопки в другом

walterhevedeich

В другом-что? Предоставьте более подробную информацию на свой вопрос, если вы хотите получить конкретные ответы. Вопрос, подобный этому, принесет вам только предположения, которые могут быть бесполезны для вас с вашей стороны.

5 Ответов

Рейтинг:
37

OriginalGriff

Не. Вместо этого настройте частный метод, который выполняет эту функцию, и вызовите его из обоих обработчиков событий.


Sergey Alexandrovich Kryukov

Конечно, мой 5. Это даже невозможно, как это было буквально задано. Событие может быть вызвано только в том классе, в котором оно объявлено.
--СА

Member 10311687

милый

BobJanova

Довольно.

Рейтинг:
30

Mohammad A Rahman

Вы можете попробовать ниже,

namespace EventHandlerCall
{
    using System;
    using System.Windows.Forms;

    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
            btnOne.Click += new EventHandler(common_Click);
            btnTwo.Click += new EventHandler(common_Click);
        }

        private void common_Click(object sender, EventArgs e)
        {
            CommonFuncationality();
        }

        private void CommonFuncationality()
        {
            MessageBox.Show("Hello world");
        }
    }
}


:)


Рейтинг:
25

Monjurul Habib

private void btnA_Click(object sender, EventArgs e)
{
    btnB_Click(sender, e);
}
private void btnB_Click(object sender, EventArgs e)
{
    ExecuteFunction();
}


Но лучшая практика-это:
private void btnA_Click(object sender, EventArgs e)
{
   ExecuteFunction();
}
private void btnB_Click(object sender, EventArgs e)
{
   ExecuteFunction();
}
private void ExecuteFunction()
{
    // Your code here
}

Кредит идет на здесь


Sergey Alexandrovich Kryukov

Вы объяснили эту идею, но еще лучшей практикой было бы 1) не нарушать соглашения об именах Microsoft, используя имена с'_', которые также не являются семантическими, 2) используя анонимные методы, вызывающие семантические методы (такие как ExecuteFunction, которые должны быть названы семантически). В общем, мои 4.
--СА

Monjurul Habib

да, я согласен. спасибо.

BobJanova

Вы можете обвинить Microsoft в соглашениях для имен методов обработчика событий, "control_EventName" - это то, что вы получаете, если позволяете его автозаполнению делать свое дело. Я не совсем уверен, что вы подразумеваете под "семантическими" именами для обработчиков событий, хотя – "этот метод обрабатывает событие X из Y" кажется мне нормальным на этом фронте. Если событие вызывает какое-то сложное вычисление, которое должно иметь другое имя, это должно быть в другом методе (вполне возможно, даже не в слое пользовательского интерфейса) в любом случае.

Uday P.Singh

мои 5! :)

Monjurul Habib

спасибо.

Рейтинг:
2

shikhar gilhotra

ПРИВЕТ,

1) Возьмите две кнопки на веб-форме.
2) дважды нажмите на обе кнопки, чтобы сгенерировать их события щелчка, а затем напишите следующее :


Button1(object sender ,Eventargs e)
{
Response.write("i am button1");
Button2_click(Button2, null);
}

Button2(object sender ,Eventargs e)
{
Response.write("i am button2");
}



Гуд удачи.


OriginalGriff

Причина, по которой я голосую за одного: это плохая идея по двум причинам.
Во-первых, потому что вы не должны вызывать обработчики событий напрямую, только из их делегата. Если вы должны имитировать нажатие на другую кнопку, то используйте эту кнопку.Вместо этого метод PerformClick-это приводит к запуску всех событий, связанных с событием нажатия кнопки.

Во-вторых, потому что это может привести к сбою обработчика событий Button2. Поскольку у вас есть параметр EventArgs, передайте его или создайте новый экземпляр. Не передавайте null, так как очень мало (если вообще есть) кода, который я когда - либо видел, проверяет наличие null EventArgs-ни одно реальное событие не будет пропускать null, поэтому оно не считается необходимым.

Member 10623273

Спасибо, Приятель.
этот небольшой код мне очень помог..

Рейтинг:
1

nit_singh

Вы можете использовать Button2.PerformClick() в обработчик события click кнопки button1.