使用Foreach循环检索选项卡页面中groupbox中的文本框文本

本文关键字:文本 groupbox 循环 Foreach 检索 选项 使用 | 更新日期: 2023-09-27 18:15:19

可能重复:
使用foreach循环检索TextBox';s在GroupBox 中

我有一个选项卡控件,这些控件有10个选项卡页面,每个页面有10个组框,每个组框有10个文本框,我如何使用foreach循环获取所有文本框文本

使用Foreach循环检索选项卡页面中groupbox中的文本框文本

使用类似的东西:

  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的控件,如果有什么不清楚的地方,请告诉我。