2

グーグルで答えを見つけようとしましたが、うまくいきませんでした。テキストボックスを含むパネルを使用してフォームを設計したので、コントロールを反復処理してすべてのテキストボックスを配列に保存できます (必要に応じて配列を反復処理できます)。問題は、パネルが配置方法を知っているプロパティを見つけることができなかったことです。その中のコントロールを反復する順序。これは最初、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 に答える