将连锁反应事件处理程序改写为一个Windows应用程序,为每一个对象创建一个窗体,对象处理事件时当前窗体成为焦点窗体。
以下是连锁反应事件处理程序的代码:using System;namespace L6_3
{
    class L6_3
    {
        static void Main()
        {
            Cock cock1 = new Cock("花花");
            Host host1 = new Host("祖逖");
            host1.Foster(cock1);
            Dog dog1 = new Dog("阿黄");
            dog1.Owner = host1;
            Cat cat1 = new Cat("咪咪");
            cat1.Owner = host1;
            Sun.Rise();
            
        }
    }    public static class Sun
    {
        public static event EventHandler OnRise;        public static void Rise()
        {
            Console.WriteLine("太阳从东方升起...");
            if (OnRise != null)
                OnRise(null, null);
        }
    }    public class Cock
    {
        private string _name;        public Cock(string name)
        {
            _name = name;
            Sun.OnRise += new EventHandler(Sun_OnRise);
        }        private void Sun_OnRise(object sender, EventArgs e)
        {
            Console.WriteLine("公鸡{0}:", _name);
            Console.WriteLine("雄鸡一声天下白!");
            this.Sing();
        }        public event EventHandler OnSing;        public void Sing()
        {
            Console.WriteLine("喔喔喔...");
            if (OnSing != null)
                OnSing(this, null);
        }
    }    public class Host
    {
        private string _name;        public Host(string name)
        {
            _name = name;
        }        public event EventHandler OnGetup;        public void Getup()
        {
            Console.WriteLine("日出而作...");
            if (OnGetup != null)
                OnGetup(this, null);
        }        public void Foster(Cock c1)
        {
            c1.OnSing += new EventHandler(c1_OnSing);
        }        private void c1_OnSing(object sender, EventArgs e)
        {
            Console.WriteLine("主人{0}:", _name);
            Console.WriteLine("闻鸡起舞!");
            this.Getup();
        }
    }    public class Dog
    {
        private string _name;
        private Host owner;        public Host Owner
        {
            get { return this.owner; }
            set
            {
                this.owner = value;
                this.owner.OnGetup += new EventHandler(owner_OnGetup);
            }
        }        public Dog(string name)
        {
            _name = name;
        }        private void owner_OnGetup(object sender, EventArgs e)
        {
            Console.WriteLine("{0}:", _name);
            Console.WriteLine("汪汪...主人起床了,我也该起了");
        }
    }    public class Cat
    {
        private string _name;
        private Host owner;        public Host Owner
        {
            get { return this.owner; }
            set
            {
                this.owner = value;
                this.owner.OnGetup += new EventHandler(owner_OnGetup);
            }
        }        public Cat(string name)
        {
            _name = name;
        }        private void owner_OnGetup(object sender, EventArgs e)
        {
            Console.WriteLine("{0}:", _name);
            Console.WriteLine("喵喵...主人起床了,我也该起了");
        }
    }
}