ITPub博客

首页 > Linux操作系统 > Linux操作系统 > c# tcbs之递归方法查找符合条件的控件

c# tcbs之递归方法查找符合条件的控件

原创 Linux操作系统 作者:wisdomone1 时间:2012-04-17 17:13:44 0 删除 编辑
 public CoreTextBox FindAccountNumberTextBox(Control parentControl) //parentcontrol在此为窗体
        {
            CoreTextBox textBox = null;//要返回匹配条件的文本框(当然经过TCBS封装过的)
            if (parentControl != null) //判断方法传入参数是为空
            {
                textBox = parentControl as CoreTextBox;//传入参数可能为窗体或窗体的子控件,通过as进行灵活操作,用as即使转换不成功,也只是返回NULL,而不是异常

                //此IF是个匹配条件,与上面的as结合起来,textbox!=null表明它是coretextbox
                //textbox.use表明文本框的用途必须是accountnumber,其它文本框就过滤掉了
                if ((textBox != null) && (textBox.Use == CoreTextBox.TextBoxUse.AccountNumber))
                {
                    return textBox;//符合文本框且文本框用途是accountnumber才返回textbox
                }
                if (parentControl.HasChildren)//传入的方法参数为窗体,haschildren属性就是真,表明有子控件
                {
                    //遍历有子控件的窗体
                    for (int i = 0; i < parentControl.Controls.Count; i++)
                    {
                        //注:在此又调用本身方法(递归,即方法调用自己),只是此时方法参数由原来的窗体变为窗体下在遍历的某个子控件
            //在此为窗体某个textbox(coretextbox),执行到此方法时,又开始从此方法的开头部分执行,逻辑为:
            //判断此子控件不空,且是文本框,然后,判断它的用途是不是acctountnumber,发现有些文本框不是,就不会执行对应if语句,
            //接着继续执行判断此子控件是否有子控件,发现文本框没有子控件,不再执行最后的遍历代码;依此逻辑重复循环其它的子控件
            //仅找到一个符合条件的子控件
                        textBox = this.FindAccountNumberTextBox(parentControl.Controls[i]);
                        //找到了此子控件,就返回此子控件
            if (textBox != null)
                        {
                            return textBox;
                        }
                    }
                }
            }
            return null;//方法参数为空,直接返回null
        }

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-721447/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb qq: 305076427 微博: wisdomone9

注册时间:2008-04-04

  • 博文量
    2164
  • 访问量
    11714440