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/,如需转载,请注明出处,否则将追究法律责任。