假设你做的控件类叫MyControl。
 
      public delegate void myDelegate();//定义一个delegate
      class MyControl
        {
          private int state;
          punlic event myDelegate OnStateChange;
//定义OnStateChange事件,它的签名方式为myDelegate
          public int State
            {
              get
                { 
                   return state;
                 }
              set
                 {
                    if(state!=value)$$(OnStateChange!=null)
                       {
                         state=value;
                         OnStateChange();
//在改变state的值时触发OnStateChange事件
                        }
                  }
              }
              public MyControl()
                {
                  OnStateChange+=new myDelegate (PStateChange);
//设置OnStateChange事件触发PStateChange
                 }              private void PStateChange()
              {
               //在这里处理state改变的事件
              }            }

解决方案 »

  1.   

    //我所理解你的想法,你可以试试namespace learn
    {
    //定义事件代理
    public delegate void PropertyChangedHandler(object source,PropertyChangedEventArgs e);
    //定义事件参数类
    public class PropertyChangedEventArgs: EventArgs{
    private object newValue;//属性改变后的新值public object NewValue{
      get{return newValue;}
      set{newValue = value;}
    }
    }public class Animal{
     //定义事件
     public event PropertyChangedHandler PropertyChanged; //定义事件处理函数
     protected virtual void OnPropertyChanged(PropertyChangedEventArgs e){
      if (PropertyChanged != null){
        PropertyChanged(this, e);
      }
     }
     
     //属性一,如果身高增高引可引起其他变化.
     private int height;
     public int Height{
       get{
          return height;
       }
       set{
         PropertyEventArgs e = new PropertyEventArgs();
         e.NewValue = value;
         height = value;
         OnPropertyChanged(e);//触发事件
       }
     } //属性二,体重
     private int weight;
     public int Weight{
      get{return weight;}
      set{weight = value;}
     }
    }//类二,继承Animal
    public class Dog:Animal{
      public Dog{
       //增加事件处理函数
       this.PropertyChanged += new PropertyChangedHandler(this.OnPropertyChanged);
      }  //处理函数
      protected override void OnPropertyChanged(object sender,PropertyEventArgs e) {
        //假设身高与体重成正比,即身高会引起体重变化。
        this.Weight = ((int)e.NewValue)*3;
      }
    }public class Test{public static void main() {
      Dog dog = new Dog();
      Console.WriteLine("Dog Height = " + dog.Height);
      Console.WriteLine("Dog Weight = " + dog.Weight);
      dog.Height = dog.height + 10;
      Console.WriteLine("New Dog Height = " + dog.Height);
      Console.WriteLine("New Dog Weight = " + dog.Weight);
    }
    }//通过Test类可以看出是否在Height变化后,Weight会随之变化。不知道这个例子可不可以满足你的要求。中间可能有错误,我未调试过。
    }