组合框中的TextBox的foreach循环以相反的顺序迭代?

时间:2012-12-13 16:29:24

标签: c# winforms foreach

我创建了四个TextBox es(按此顺序:textBox1textBox2,...)并在GroupBox内将它们放在另一个之下。然后我添加了Click事件:

private void button1_Click(object sender, EventArgs e)
{
    foreach (TextBox tb in groupBox1.Controls.OfType<TextBox>())
    {
        if (string.IsNullOrWhiteSpace(tb.Text))
        {
            Console.WriteLine(tb.Name);
        }
    }
}

当我运行程序并单击Button时(当所有TextBox es为空时),这是我得到的输出:

  

textBox4

     

textBox3

     

textBox2

     

textBox1的

显然,foreach循环以相反的顺序迭代GroupBox控件。我希望它从textBox1textBox4执行此操作,因为这是创建它们并将其放入组合框中的顺序。

为什么foreach循环反向?好奇......

2 个答案:

答案 0 :(得分:5)

控件按照同一父容器中控件的Z顺序排列(从最顶部到最底部)。你想如何订购?

答案 1 :(得分:0)

试试这个

foreach (TextBox txt in Controls.OfType<GroupBox>().SelectMany(g=>g.Controls.OfType<TextBox>()).ToList().Reverse<TextBox>())
        {
            //Write your logic here
        }