我们往往都是使用C#自己固有的事件,例如点击按钮将自动激发click事件。那么,我们自己如何设计一个事件,并在某种状态下激发该事件呢

解决方案 »

  1.   

    1.在你的类中声明委托 delegate test(object send,你需要传递的参数(参数多可以类封装))//无参代理
    2.在你的类中委托定义事件对象 public even test objTest
    3.在你的类中在你需要的地方发送事件消息  objTest("send"或null,你的参数值);
    4.在你需要结果的地方响应事件 你的类.test+=EventHandler(你的方法名称)// 接着就可以在你的方法里得到数据
    自定义事件一般用于更好的类的交互分装也用于winform的用户控件
    GoodLuck!!!
      

  2.   

    我来说个例子吧,比如有2个类,一个类描述裁判员,一个类描述运动员。裁判员有一个事件,当裁判员鸣枪后触发此事件。运动员有跑步的方法。当运动员听到鸣枪后就开始跑步。namespace ConsoleApplication7
    {
        class Program
        {
            static void Main(string[] args)
            {
                Yundongyuan y = new Yundongyuan("xiaoli");
                Yundongyuan y1 = new Yundongyuan("xiaozhang");// 实例化运动员
                Caipanyuan cp = new Caipanyuan();//实例化裁判
                cp.del += new delrun(y.Run);
                cp.del += new delrun(y1.Run);//订阅事件
                cp.Kaiqiang();
                Console.ReadLine();
                
            }
        }
        public delegate void delrun();// 声明委托
        public class Yundongyuan
        {
            private string name;
            public Yundongyuan(string name)
            {
                this.name = name;
            }
            public void Run()
            {
                Console.WriteLine("{0}开始跑",this.name);
            }
        }
        public class Caipanyuan
        {
            public event delrun del;// 创建基于委托的事件
            public void Kaiqiang()
            {
                Console.WriteLine("peng!开始跑");
                if (del != null)
                    del();// 开枪激发事件
            }
        }
    }