请教重载事件参数类的构造函数问题
定义了一个代理,一个事件参数类,四个事件都使用这个代理和参数类,四个事件使用参数类中不同的属性,如何根据参数类的构造函数(重载了四次)让四个事件只能访问自己相关的属性呢?
[解决办法]
自定义事件类继承EventArgs
定义4个构造函数。
然后在调用的时候参数各不相同就可以了
exp:
public class MyEventArgs : EventArgs { private int age; private string name; private bool sex; public MyEventArgs (int age) { this.age=age; } public MyEventArgs (string name) {this.name=name;} public MyEventArgs (bool sex) {this.sex=sex;} public int Age { get{return this.age;}} public string Name { get { return this.name; } } public bool Sex { get{return this.sex;} } }//你在访问的时候直接用不用的参数,//委托定义为 public delegate void MyEventHandler(object sender, MyEventArgs e);//事件定义为public event MyEventHandler MyChanged;//定义一个ColorChanged事件 protected virtual void MyChanged(MyEventArgs e) {//事件触发方法 if (MyChanged!= null) {//判断事件是否为空 MyChanged(this, e);//触发事件 } }//使用应该会的吧 int i=1;string a="test"; bool flag=false; MyChanged(new MyEventArgs(i)); MyChanged(new MyEventArgs(a)); MyChanged(new MyEventArgs(flag));
[解决办法]
就是一楼那样了
protected virtual void MyChanged(MyEventArgs e) {//事件触发方法 if (MyChanged!= null) {//判断事件是否为空 MyChanged(this, e);//触发事件 } }//使用应该会的吧 int i=1;string a="test"; bool flag=false; MyChanged(new MyEventArgs(i)); MyChanged(new MyEventArgs(a)); MyChanged(new MyEventArgs(flag));