C#学习笔记--事件的统一关联(集中处理)

 

关于控件事件的一些简单介绍,可以参考链接:https://blog.csdn.net/qq_39157152/article/details/113242984

在程序开发中,遇到控件要关联类似的事件,重复输入关联是一件很繁琐的事情,所以可以使用事件统一关联的处理方式,符合面向对象编程的开闭原则。

开闭原则:程序拓展,封闭修改。

以下是原始的关联方式,比较繁琐,当程序有上千个控件需要关联时,界面和关联都会显得很臃肿。

            //关联事件
            //this.button1.Click += new System.EventHandler(this.btn_Click);
            //this.button2.Click += new System.EventHandler(this.btn_Click);
            //this.button3.Click += new System.EventHandler(this.btn_Click);
            //this.button4.Click += new System.EventHandler(this.btn_Click);
            //this.button5.Click += new System.EventHandler(this.btn_Click);
            //this.button6.Click += new System.EventHandler(this.btn_Click);
            //this.button7.Click += new System.EventHandler(this.btn_Click);
            //this.button8.Click += new System.EventHandler(this.btn_Click);

 使用遍历控件集合的方式,统一关联事件,在后续的开发中,如需添加新的控件,不许要修改代码,代码简洁,高效。在Tag后面加?是因为Tag没有数据的时候被用,可能会出现位将对象引用实例的异常,?在这里是判断Tag是否为空,为空则不执行后续代码。


            //通过遍历的方式关联事件,以后程序开发中,若有拓展,封闭修改(对控件要统一关联事件)
            foreach(Control item in this.Controls)
            {
                if(item is Button && item.Tag?.ToString() == "btn")
                {
                    item.Click += new System.EventHandler(this.btn_Click);
                }
            }

 关联的事件,sender是当前控件对象,由sender是object类型,所以需要转化成相应的类型

        private void btn_Click(object sender, EventArgs e)
        {
            //sender参数是当前事件所在控件的对象
            Button btn = (Button)sender;
            MessageBox.Show(btn.Text);
        }

关联事件Demo链接的https://download.csdn.net/download/qq_39157152/14939506

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值