看Inside C#吧,很好的一本书,对了解C#的事件很有帮助

解决方案 »

  1.   

    C#中,事件是通过delegate实现的,这一段的确比较难懂,需要反复看书和看例程。
    下面是一段很好的例程:delegate(译为“委托”)其实就是对象方法指针,委托(delegate)根据其返回值分为两种既:一、一般委托 二、组潘委托(返回值为void),它可以通过重“+=”运算符指向多个对象方法,事件就用这种委托实现,如:
          public delegate void TestDelegate();
          class TData
            {
              private int data;
              punlic event TestDelegate OnDataChange;
              public int Data
                {
                  get
                    { 
                       return data;
                     }
                  set
                     {
                        if(data!=value)$$(OnDateChange!=null)
                           {
                             data=value;
                             OnDateChange();
                            }
                      }
                  }
                  public void PrintText()
                   {
                     System.Console.Write("Data's valus is Changed");
                    }
                  public TData()
                    {
                      OnDataChange+=new TestDelegate(PrintText);
                      }
                 }
                 class AppClass
                    {
                      public static void Main()
                         {
                            Tdada AppData=new Tdata();
                            AppData.Data=5 //data变化,触发OnDataChange 事件
                          }
                     }
    程序编译后输出:
          Data's value is changed
    说明:
        关键字event作用:1、说明这是一个事件处理过程 2、对事件委托只能进
                          行“+=”或“-=”操作。