2

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

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

2 回答 2

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];
}
于 2012-10-14T16:49:10.703 回答
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();
}
于 2012-10-14T17:51:07.613 回答