假设你做的控件类叫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改变的事件
} }
{
//定义事件代理
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会随之变化。不知道这个例子可不可以满足你的要求。中间可能有错误,我未调试过。
}