我正在编写一个代码来获取面板中的所有控件,例如:
foreach (Control c in panel1.Controls)
{
MessageBox.Show(c.Name.ToString());
}
这是正确的,并将所有控件归还给我。 Top控件的TabIndex(textBox1)为0,它从上到下增加(这意味着textBox2在textBox1下面,textBox2> TabIndex为1。)
当我在MessageBox中运行此代码时,它首先返回textBox2,然后返回textBox1!
那么,这个选择的基础是什么(为什么计算机首先选择textbox2?)
我该如何解决这个问题?!
谢谢你
答案 0 :(得分:1)
你想要的只是TabIndex订购的控件列表 Controls属性按照它们添加到表单的顺序为您提供控件列表。 您只需通过TabIndex对该列表进行排序。
Using System.Linq;
foreach (var item in panel1.Controls.OfType<Control>().OrderBy(ee=>ee.TabIndex))
答案 1 :(得分:-1)
您也可以按照控件的位置进行排序。获得积分。
它将您首先添加到Control的文本框从上到下返回。