2014-09-20 4 views
-1

Я пишу код, чтобы получить все элементы управления на панели, как:Получить все элементы управления в панели от Up-к-вниз

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

Это правильно и вернуть мне все элементы управления. TabIndex для Top управления (textBox1) является 0, и он увеличится с до-до-вниз (это означает, что TextBox2 ниже textBox1 и TabIndex TextBox2 является 1.)

Когда я запускаю этот код в MessageBox это возвращение сначала мне textBox2, затем textBox1!

Итак, Какова база для этого выбора (Почему компьютер сначала выбирает текстовое поле2)?

Как я могу решить эту проблему?!

поблагодарить у

+0

Это зависит от того, как вы добавили их во время разработки –

+0

Вы используете Visual Studio WinForms Designer для создания своей формы? Если это так, VS будет автоматически генерировать код для элементов управления, и может быть, что 'textBox1' добавляется после' textBox2', что, очевидно, приводит к тому, что 'textBox2' возвращается сначала на итерации. Кроме того, проведя небольшое исследование, вы могли бы прочитать о [Коллекциях] (http://msdn.microsoft.com/en-us/library/ybcx56wz.aspx) ... –

+0

Да, спасибо –

ответ

1

То, что вы хотите, это просто список элементов управления, заказанных TabIndex.
Свойство Controls предоставляет вам список элементов управления в том порядке, в котором они были добавлены в вашу форму. Вам просто нужно отсортировать этот список по TabIndex.

Using System.Linq; 

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

Ваш код два ошибки: Аргумент экземпляра: невозможно преобразовать из 'System.Windows.Forms.Panel' в 'System.Linq.ParallelQuery' \t И |||| «System.Windows.Forms.Panel» не содержит определения для «OfType» и наилучшего метода перегрузки надстройки «System.Linq.Queryable.OfType (System.Linq.IQueryable)» содержит некоторые недопустимые аргументы –

+0

try panel1 .Controls .. –

+1

Да, спасибо, это правда –

-1

Вы также можете заказать по местонахождению органов управления. Получив очки.

Он возвращает текстовое поле, которое вы добавили сначала в элемент управления сверху вниз.

+0

Это не связано с их * местоположениями * –

Смежные вопросы