一个事件被多次订阅

一个事件被多个函数给订阅,将会按照订阅顺序触发对应的处理函数!

Form1中的代码:

        public static event EventHandler event1;

        public Form1()
        {
            InitializeComponent();
            Form2 f2 = new Form2();
            event1 += Form1_event1;
            event1 += Form1_event2;
        }

        private void Form1_event2(object sender, EventArgs e)
        {
            MessageBox.Show("3");
        }

        void Form1_event1(object sender, EventArgs e)
        {
            MessageBox.Show("1");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            EventArgs ee=new EventArgs();
            event1(this, ee);
        }
Form2中的代码:

        public Form2()
        {
            InitializeComponent();
            Form1.event1 += Form1_event1;
        }

        void Form1_event1(object sender, EventArgs e)
        {
            MessageBox.Show("2");
        }

点击Form1中的button1后将会依次显示2,1,3消息盒

另外,如果把button1_click改为:

        private void button1_Click(object sender, EventArgs e)
        {
            event1 += Form1_event1;    
            EventArgs ee=new EventArgs();
            event1(this, ee);
            MessageBox.Show("4");     
        }

那就会弹出:2,1,3,1,4!

由此可以看出,“+=”的作用就是把事件处理函数按照顺序放在一个队列里,而不管是否有重复的事件处理函数,然后待触发事件后,就把队列中所有的事件处理函数放在触发事件处依次执行。“-=”的作用就是去掉队列中相应的事件处理函数,若有重复的,就从重复的函数中排在最后面的开始去除。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值