日期:2014-05-18  浏览次数:21187 次

请教重载事件参数类的构造函数问题
定义了一个代理,一个事件参数类,四个事件都使用这个代理和参数类,四个事件使用参数类中不同的属性,如何根据参数类的构造函数(重载了四次)让四个事件只能访问自己相关的属性呢?

------解决方案--------------------
自定义事件类继承EventArgs
定义4个构造函数。
然后在调用的时候参数各不相同就可以了
exp:
C# code

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));

------解决方案--------------------
就是一楼那样了
C# code

 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));