2

我创建了四个TextBoxes (按此顺序:textBox1, textBox2,...)并将它们一个放在另一个下方的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(当所有TextBoxes 为空时),这是我得到的输出:

文本框4

文本框3

文本框2

文本框1

显然,foreach循环以相反的顺序迭代GroupBox控件。我希望它从textBox1to 开始,textBox4因为这是它们被创建并放入 groupbox 的顺序。

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

4

2 回答 2

5

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

于 2012-12-13T16:32:41.470 回答
0

试试这个

foreach (TextBox txt in Controls.OfType<GroupBox>().SelectMany(g=>g.Controls.OfType<TextBox>()).ToList().Reverse<TextBox>())
        {
            //Write your logic here
        }
于 2016-08-17T07:06:37.443 回答