class button { private ButtonEventHandler beh=null; // For click private ButtonEventHandler bep=null; // For press public void AddOnClick(ButtonEventHandler handler) { Console.WriteLine("Adding click event handler"); beh=(ButtonEventHandler)Delegate.Combine(beh, handler); } public void RemoveOnClick(ButtonEventHandler handler) { Console.WriteLine("Removing click event handler"); beh=(ButtonEventHandler)Delegate.Remove(beh, handler); } protected virtual void OnClick(ButtonEventArgs e) { if (beh!=null) { beh(this, e); } } public void AddOnPress(ButtonEventHandler handler) { Console.WriteLine("Adding Press Event handler"); bep=(ButtonEventHandler)Delegate.Combine(bep, handler); } public void RemoveOnPress(ButtonEventHandler handler) { Console.WriteLine("Removing Press Event handler"); bep=(ButtonEventHandler)Delegate.Remove(bep, handler); } protected virtual void OnPress(ButtonEventArgs e) { if (bep!=null) { bep(this, e); } } public void click() { ButtonEventArgs bea=new ButtonEventArgs("clicked"); OnClick(bea); } public void press() { ButtonEventArgs bea=new ButtonEventArgs("pressed"); OnPress(bea); } }
private ButtonEventHandler beh=null; // For click private ButtonEventHandler bep=null; // For press
public void AddOnClick(ButtonEventHandler handler) { Console.WriteLine("Adding click event handler"); beh=(ButtonEventHandler)Delegate.Combine(beh, handler); }
beh ------> ButtonEventHandler1 -----> &Fn1() ButtonEventHandler2 -----> &Fn2() ButtonEventHandler3 -----> &Fn3() ButtonEventHandler4 -----> &Fn4()
public class DelegatesAndEvents { //Declare the simulated button class private button button1=new button(); //Have a private constrcutor private DelegatesAndEvents() { /* Now start adding onclick and onpress events on the button class by passing the appropriate methods to which calls should be routed. What is being done below is that three methods are being added to the same OnClick event so that when the Click event is raised the delegate would call all the methods */ button1.AddOnClick(new ButtonEventHandler(ClickEventHandler1)); button1.AddOnClick(new ButtonEventHandler(ClickEventHandler2)); button1.AddOnClick(new ButtonEventHandler(ClickEventHandler3)); button1.AddOnPress(new ButtonEventHandler(PressEventHandler)); button1.click(); button1.press(); } public static void Main(String [] args) { DelegatesAndEvents d=new DelegatesAndEvents(); } public void ClickEventHandler1(object sender, ButtonEventArgs e) { Console.WriteLine("click event handler1"); Console.WriteLine(e.msg); Console.WriteLine("after"); } public void ClickEventHandler2(object sender, ButtonEventArgs e) { Console.WriteLine("click event handler2"); Console.WriteLine(e.msg); Console.WriteLine("after"); } public void ClickEventHandler3(object sender, ButtonEventArgs e) { Console.WriteLine("click event handler3"); Console.WriteLine(e.msg); Console.WriteLine("after"); } public void PressEventHandler(object sender, ButtonEventArgs e) { Console.WriteLine("press event handler"); Console.WriteLine(e.msg); Console.WriteLine("after"); } }
Build Your Own ASP.NET Website Using C# & VB.NET