迭代面板控制

时间:2012-10-14 16:46:21

标签: c# iteration panel

我试图通过谷歌搜索找到答案,但没有运气。 我设计了包含文本框的面板,因此我可以遍历其控件 并保存数组中的每个文本框(所以我可以在我想要的时候迭代数组), 事情是我无法找到面板知道如何安排顺序迭代其中的控件的哪个属性,这是第一个,第二个等等。 我想也许是标签,但是当我把它们改成我的喜好时它并没有改变任何东西。 所以我想知道 - 你怎么能告诉面板迭代你想要的控件呢? 您需要更改哪个属性?

private void CreateTxtArr()
{
     txts = new TextBox[8];
     for (int i = 0; i < pnlTxt.Controls.Count; i++)
        txts[i] = (TextBox)pnlTxt.Controls[i];
}

2 个答案:

答案 0 :(得分:3)

您可以使用is运算符来检查the child control is TextBox小组的private void CreateTxtArr() { txts = new TextBox[8]; for (int i = 0; i < pnlTxt.Controls.Count; i++) if( pnlTxt.Controls[i] is TextBox) txts[i] = (TextBox)pnlTxt.Controls[i]; } 是否{/ 1}}

{{1}}

答案 1 :(得分:1)

如果您可以使用.Net 3.5或更高版本,您可以使用Linq轻松完成:

private void CreateTxtArray()
{
    // txts is an Array of TextBox
    var txts = (from Control ctrl in pnlTxt.Controls
                where ctrl is TextBox
                select ctrl as TextBox).ToArray();
}

在所有情况下都是一种更简单的迭代方式

编辑:这是我忘记的旧答案,下面有更简单的方法

private void CreateTxtArray()
{
    // txts is an Array of TextBox
    var txts = pnlTxt.Controls.OfType<TextBox>().ToArray();
}
相关问题