CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3

Thread: Delegation

Threaded View

  1. #1
    Join Date
    Aug 2005
    Posts
    98

    Delegation

    Hello

    http://www.csharp-station.com/Tutorials/Lesson14.aspx

    Code:
    
     using System;
    using System.Drawing;
    using System.Windows.forms;
    
    // custom delegate
    public delegate void Startdelegate();
    
    class Eventdemo : form
    {
        // custom event
        public event Startdelegate StartEvent;
    
        public Eventdemo()
        {
            Button clickMe = new Button();
    
            clickMe.Parent = this;
            clickMe.Text = "Click Me";
            clickMe.Location = new Point(
                (ClientSize.Width - clickMe.Width) /2,
                (ClientSize.Height - clickMe.Height)/2);
    
            // an EventHandler delegate is assigned
            // to the button's Click event
            clickMe.Click += new EventHandler(OnClickMeClicked);
    
            // our custom "Startdelegate" delegate is assigned
            // to our custom "StartEvent" event.
            StartEvent += new Startdelegate(OnStartEvent);
    
            // fire our custom event
            StartEvent();
        }
    
        // this method is called when the "clickMe" button is pressed
        public void OnClickMeClicked(object sender, EventArgs ea)
        {
            MessageBox.Show("You Clicked My Button!");
        }
    
        // this method is called when the "StartEvent" Event is fired
        public void OnStartEvent()
        {
            MessageBox.Show("I Just Started!");
        }
    
        static void Main(string[] args)
        {
            Application.Run(new Eventdemo());
        }
    }


    And this from :http://www.codeguru.com/csharp/cshar...eventhandling/



    Code:
    
    using System;
    //Step 1 Create delegate object
    public delegate void MyHandler1(object sender,MyEventArgs e);
    public delegate void MyHandler2(object sender,MyEventArgs e);
    
    //Step 2 Create event handler methods
    class A{
      public const string m_id="Class A";
      public void OnHandler1(object sender,MyEventArgs e){
        Console.WriteLine("I am in OnHandler1 and MyEventArgs is {0}",
                          e.m_id);
      }
      public void OnHandler2(object sender,MyEventArgs e){
        Console.WriteLine("I am in OnHandler2 and MyEventArgs is {0}",
                          e.m_id);
      }
    
      //Step 3 create delegates, plug in the handler and register
      //       with the object that will fire the events
      public A(B b){
        MyHandler1 d1=new MyHandler1(OnHandler1);
        MyHandler2 d2=new MyHandler2(OnHandler2);
        b.Event1 +=d1;
        b.Event2 +=d2;
      }
    }
    
    //Step 4 Calls the encapsulated methods through the
    //       delegates (fires events)
    class B{
      public event MyHandler1 Event1;
      public event MyHandler2 Event2;
      public void FireEvent1(MyEventArgs e){
        if(Event1 != null){
          Event1(this,e);
        }
      }
      public void FireEvent2(MyEventArgs e){
        if(Event2 != null){
          Event2(this,e);
        }
      }
    }
    public class MyEventArgs  EventArgs{
      public string m_id;
    }
    public class Driver{
      public static void Main(){
        B b= new B();
        A a= new A(b);
        MyEventArgs e1=new MyEventArgs();
        MyEventArgs e2=new MyEventArgs();
        e1.m_id ="Event args for event 1";
        e2.m_id ="Event args for event 2";
        b.FireEvent1(e1);
        b.FireEvent2(e2);
      }
    }

    I have 2 questions,

    In first example ,It didn't used



    But in second example,It is used
    Why?

    When do we use EventArgs?
    Last edited by Abalfazl; March 25th, 2007 at 03:26 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured