2013-09-16 2 views
4

Несколько лет назад я использовал для программирования с Visual Basic 6, мне удалось создать объекты с тем же именем, а затем разделить их по индексу. Например, мы можем создать TextBox1 и еще TextBox1, но с другим индексом. теперь эта функция больше не доступна! В настоящее время я использую Visual Studio 2012. Есть ли способ манипулировать VS2012, чтобы включить эту функцию еще раз или что-то похожее на нее, потому что это было действительно полезно.Что случилось с управлением массивами

+0

Он был назван «массивы элементов управления в VB6 Только в случае, если кто хотел бы знать, что – MarkJ

+0

благодаря сделано :) – Maher

ответ

4

Более простой способ достижения подобной вещи сегодня состоит в том, чтобы поместить все эти элементы управления в общий родительский элемент управления. Этот родитель может быть групповым ящиком, панелью или даже самой формой.

Так что, если, скажем, все флажки в форме должны быть проиндексированы, без каких-либо исключений вам не нужно делать ничего особенного. Если только один флажок отличается, вам нужен этот флажок, чтобы иметь другой родительский элемент управления, чем индексированные флажки. В этом случае вы можете сложить панель управления под группой флажков, или вы можете сложить панель управления под единым флажком, который отличается. Либо это сработает.

Позже вы по-прежнему не сможете получить доступ к этим флажкам по индексу, но вы сможете рассматривать их как коллекцию. Вот как вы можете сделать это:

For Each box As CheckBox In Me.Controls.OfType(Of Checkbox)() 
    'Do something with each checkbox 
Next 

Или, если вы хотите знать, какие из них проверяются:

Dim checkedBoxes As IEnumerable(Of Checkbox) = Me.Controls.OfType(Of Checkbox)().Where(Function(b) b.Checked) 

Если вы действительно хотите массив флажков, вы можете использовать эту технику, чтобы получить один , Просто поместите код, как это в случае нагрузки вашей формы:..

Dim checkBoxes() CheckBox = Me.Controls.OfType(Of CheckBox)().OrderBy(Function(b) b.Name).ToArray() 
+0

Отлично! Это очень круто: D большое спасибо за помощь! :) – Maher

+0

+1. Единственная недостающая часть - показать, как обрабатывать все события в одной рутине , – MarkJ

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