seeWriting C# Custom Events
http://www.ondotnet.com/pub/a/dotnet/2002/04/15/events.html

解决方案 »

  1.   

    基本上如此://定义一个代理
    public delegate void someDelegate(Arg list);
    //声明一个事件
    public event someDelegate OnSome;//引发事件
    if (OnSome != null)
    {
        OnSome(Value List);
    }
      

  2.   

    // event_keyword.cs
    using System;
    public delegate void MyDelegate();   // delegate declarationpublic interface I 
    {
       event MyDelegate MyEvent;
       void FireAway();
    }public class MyClass: I 
    {
       public event MyDelegate MyEvent;   public void FireAway() 
       {
          if (MyEvent != null)
             MyEvent();
       }
    }public class MainClass 
    {
       static private void f() 
       {
          Console.WriteLine("This is called when the event fires.");
       }   static public void Main () 
       {
          I i = new MyClass();      i.MyEvent += new MyDelegate(f);
          i.FireAway();
       }
    }
      

  3.   

    本次只用一个实例,来说明在C#中如何使用自定义事件。
    写一个类,此类包含了自定义事件: onSendMsg。
    文件名:ChatServer.cs
    public class ChatServer
    {
    public delegate void MyEventHandler(string msg);
    public event MyEventHandler onSendMsg;
    public void SendMsg()
    {
    onSendMsg("开始发送消息!");
    }
    }
    文件名:Form1.cs
    ///////////////////////////////////
    //类事件的处理代码如下
    private void SendMsgTest()
    {
    //创建ChatServer类的实例
    Server f_Server;
    f_Server = new Server();
    f_Server.onSendMsg += new Server.MyEventHandler(this.OnSendMsg);
    //调用 f_Server的SendMsg()函数
    f_Server.SendMsg();
    }
    //处理 onSendMsg 事件代码
    protected void OnSendMsg(string msg)
    {
    //输出调试信息
    Console.WriteLine(msg);
    }
      

  4.   

    这是我刚刚做的一个试验,供参考,共同进步。using System;// 创建一个类,用于传递事件的数据,该类从EventArgs继承
    public class MyEventArgs:EventArgs
    {
    public int I;
    public MyEventArgs(int i)
    {
    I=i;
    }
    }// 定义一个delegate,该delegate返回void,有两个参数:object sender, EventArgs e
    delegate void MyEventHandler(object sender, MyEventArgs e);class EventClass
    {
    // 定义事件,delegate是刚刚定义的delegate
    public event MyEventHandler MyEvent; private int i;
    public int I
    {
    get
    {
    return i;
    }
    set
    {
    i=value;
    if (value>100)
    {
    // 如果将I的值改为100,则触发MyEvent事件的发生
    if (MyEvent != null)
    {
    MyEventArgs args = new MyEventArgs(value); // 定义一个EventArgs对象
    MyEvent(this, args); // 触发事件
    }
    }
    }
    }}class MainClass
    {
    // 定义一个处理事件的程序
    public static void EventTrigged(object sender, MyEventArgs e)
    {
    Console.WriteLine("您输入的是" + e.I + ",事件被触发。");
    } static void Main()
    {
    EventClass e= new EventClass(); // 指定事件的处理程序
    e.MyEvent += new MyEventHandler(EventTrigged); int i;
    do
    {
    Console.Write("请输入一个数值,大于100会触发事件的发生,输入0则退出:");
    i = Int32.Parse(Console.ReadLine());
    if (i==0)
    {
    break;
    }
    e.I = i;
    }
    while (true); Console.ReadLine();
    }}