Я хочу сделать что-то вроде этого:
Button btn1 = new Button();
btn1.Click += new EventHandler(btn1_Click);
Button btn2 = new Button();
// Take whatever event got assigned to btn1 and assign it to btn2.
btn2.Click += btn1.Click; // The compiler says no...
Где btn1_Click уже определен в классе:
void btn1_Click(object sender, EventArgs e)
{
//
}
Это не будет компилироваться, конечно ( "Событие" System.Windows.Forms.Control.Click "может появляться только с левой стороны + = или - =" ). Есть ли способ взять обработчик события из одного элемента управления и назначить его другому во время выполнения? Если это невозможно, дублирует обработчик события и назначает его другому элементу управления во время выполнения?
Несколько моментов: я долгое время искал это из-за этого и не нашел способа сделать это еще. Большинство предпринятых попыток включают размышления, поэтому, если вы прочитаете мой вопрос и подумаете, что ответ невероятно очевидный, попробуйте сначала скомпилировать код в Visual Studio. Или, если ответ действительно невероятно очевиден, пожалуйста, не стесняйтесь меня. Спасибо, я с нетерпением жду, если это возможно.
Я знаю, что могу просто сделать это:
btn2.Click += new EventHandler(btn1_Click);
Это не то, что я ищу здесь.
Это тоже не то, что я ищу:
EventHandler handy = new EventHandler(btn1_Click);
Button btn1 = new Button();
btn1.Click += handy;
Button btn2 = new Button();
btn2.Click += handy;