c# 中control类的作用——递归清除页面控件内容

        Control类是Form和各种windows窗体控件设备的基类,属于命名空间System.Windows.Forms。每个window控件设备都有一个ControlCollection类型,ControlCollection是一个Control对象的集合,包含了属于某个控件的所有控件对象,利用Control、ControlCollection可以实现对某个窗体程序的所含的所有控件进行控制。

        例如:

        当我们需要重置页面内文本框时,第一个方法为对所有的textbox进行clear()操作,但是这样效率极其低下,严重影响开发速度,产生大量代码。第二个办法为通过Control实现层层递归。

private void reset(Control.ControlCollection c)
        {
            if (c.Count > 0)
            {
                foreach (Control cc in c)
                {
                    if (cc.GetType().ToString().Equals("System.Windows.Forms.TextBox"))
                    {
                        ((TextBox)cc).Clear();
                    }
                    if (cc != null)
                    {
                        reset(cc.Controls);
                    }
                    else
                        return;
                }
            }
            else
                return;
        }

        

        只需令reset()的参数是this.controls,即可实现层层遍历。

例如,会先查找到Form中的TextBox,再遍历Penel(如果有的话)中的TextBox。如果Penel中还有控件,则进继续遍历到下一层次查找控件中是否存在TextBox,并执行clear()函数。

        通过这种方式,我们可以实现对窗体控件的多形式控制。例如,对Form中的控件进行操作:

private void fun(Form frm)
        {
            foreach (Control con in frm.Controls)
            {
                if (con is TableLayoutPanel)//如果界面中存在TableLayoutPanel控件
                {
                    foreach (Control contrl in con.Controls)
                       ...
                }
                else if (con is GroupBox)
                {
                    foreach (Control contrl in con.Controls)
                        ...
                }
                else if (con is TabControl)
                {
                    foreach (TabPage tp in ((TabControl)con).TabPages)
                    {
                        
                        foreach (Control contrl in tp.Controls)
                        {
                            ...
                        }
                    }
                }
                else
                {
                    ...
                }
            }
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值