从上到下获取面板中的所有控件

时间:2014-09-20 20:13:15

标签: c# winforms controls

我正在编写一个代码来获取面板中的所有控件,例如:

       foreach (Control c in panel1.Controls)
        {
            MessageBox.Show(c.Name.ToString());
        }

这是正确的,并将所有控件归还给我。 Top控件的TabIndex(textBox1)为0,它从上到下增加(这意味着textBox2在textBox1下面,textBox2> TabIndex为1。)

当我在MessageBox中运行此代码时,它首先返回textBox2,然后返回textBox1!

那么,这个选择的基础是什么(为什么计算机首先选择textbox2?)

我该如何解决这个问题?!

谢谢你

2 个答案:

答案 0 :(得分:1)

你想要的只是TabIndex订购的控件列表 Controls属性按照它们添加到表单的顺序为您提供控件列表。 您只需通过TabIndex对该列表进行排序。

Using System.Linq;

foreach (var item in panel1.Controls.OfType<Control>().OrderBy(ee=>ee.TabIndex))

答案 1 :(得分:-1)

您也可以按照控件的位置进行排序。获得积分。

它将您首先添加到Control的文本框从上到下返回。

相关问题