Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How make one event handler that applies to multiple controls in C#?

Tags:

c#

controls

In Visual Basic I knew how to do it, but I'm new to C#, so can you guys tell me how do I make a "private void" with mouse hover that applies the same event to multiple controls? There's an example:

private void button1, button2, button3, button4_MouseHover(object sender, EventArgs e)
{
     btn.Image = pic
}
like image 662
Nicolas Mossmann Avatar asked May 24 '12 14:05

Nicolas Mossmann


People also ask

Can an event have multiple handlers?

You can assign as many handlers as you want to an event using addEventListener(). addEventListener() works in any web browser that supports DOM Level 2.

How do you link two events to a single event handler in Windows Forms?

To connect multiple events to a single event handler in C#Click the name of the event that you want to handle. In the value section next to the event name, click the drop-down button to display a list of existing event handlers that match the method signature of the event you want to handle.


2 Answers

Just declare one event handler and point each button at it:

private void Common_MouseHover(object sender, EventArgs e)
{
     Button btn = sender as Button;
     if (btn != null)
         btn.Image = pic
}

Then in code or designer:

button1.MouseHover += Common_MouseHover;
button2.MouseHover += Common_MouseHover;
// .. etc
like image 72
stuartd Avatar answered Nov 15 '22 17:11

stuartd


When you subscribe to the event on a button, it's just a standard event handler:

button1.Click += myEventHandler;

You can use the same code to add handlers for every button:

button1.Click += myEventHandler;
button2.Click += myEventHandler;
button3.Click += myEventHandler;
button4.Click += myEventHandler;
button5.Click += myEventHandler;
button6.Click += myEventHandler;
like image 32
mattytommo Avatar answered Nov 15 '22 15:11

mattytommo