使用Foreach循环检索选项卡页面中groupbox中的文本框文本
本文关键字:文本 groupbox 循环 Foreach 检索 选项 使用 | 更新日期: 2023-09-27 18:15:19
可能重复:
使用foreach循环检索TextBox';s在GroupBox 中
我有一个选项卡控件,这些控件有10个选项卡页面,每个页面有10个组框,每个组框有10个文本框,我如何使用foreach循环获取所有文本框文本
使用类似的东西:
foreach (TabPage t in tabControl1.TabPages)
{
foreach (Control c in t.Controls)
{
if (c is GroupBox)
{
foreach (Control cc in c.Controls)
{
if (cc is TextBox)
{
MessageBox.Show(cc.Name);
}
}
}
}
}
您可以使用这样的东西:
Helper函数:
public static IEnumerable<T> PrefixTreeToList<T>(this T root, Func<T, IEnumerable<T>> getChildrenFunc) {
if (root == null) yeild break;
if (getChildrenFunc == null) {
throw new ArgumentNullException("getChildrenFunc");
}
yield return root;
IEnumerable children = getChildrenFunc(root);
if (children == null) yeild break;
foreach (var item in children) {
foreach (var subitem in PrefixTreeToList(item, getChildrenFunc)) {
yield return subitem;
}
}
}
用法:
foreach (TextBox tb in this.PrefixTreeToList(x => x.Controls).OfType<TextBox>()) {
//Do something with tb.Text;
}
我想,我需要解释一下我在这里做什么,这段代码遍历了整个控件树,并选择了其中类型为TextBox的控件,如果有什么不清楚的地方,请告诉我。