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

 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
        }
请使用浏览器的分享功能分享到微信等