2016-10-19 1 views
1

Si Я работаю над заданием, в котором у меня есть 10 RadioButtons, указывающих, сколько у меня участников, и в зависимости от того, что я выбираю от 1 до 10, мне нужно, чтобы многие из моих соответствующих текстовых полей были поэтому я мог бы заполнить его именами!Visual Basic Итеративное включение текстового поля

Есть ли способ для меня, чтобы сделать цикл между 1 и числом, я выбрал из RadioButton и сказать что-то вроде

For i = 0 to Size 
{ 
    TextBox&i.Enabled = True 
} 

Поскольку мои полей ввода называются TextBox1 к TextBox10

Я знаю, вы можете добавить строки вместе с помощью &, но как я могу это сделать для имени объекта?

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

Спасибо заранее!

ответ

1

Вы можете перебрать все элементы управления, как это:

For Each ctr In Me.Controls 
Dim indx As String = ctr.Name 
If TypeOf (ctr) Is Textbox Then 
' Now compare the name with TextBox&i and do smth 
End If 
Next 
+0

Большое спасибо! Кажется, это способ сделать это, используя элементы управления – Bardia

+0

Имейте в виду, что порядок * может * не быть логически совместимым с размещением элементов управления в форме. Если у вас есть эта проблема, вы можете создать свой собственный «Список (флажок)», добавить флажки в этот список в нужном вам порядке и перебрать эту коллекцию вместо 'Controls'' Form'. –

1

Это не возможно просто сцепить строки и использовать его в качестве объекта ссылки на переменной, как это, но вы можете искать управление формой их собственность имени (который является строкой) и сделать это таким образом. Вот пример:

Private Sub EnableTextBoxes(ByVal Size As Integer) 
    For i As Integer = 1 To Size 
     Dim matches() As Control = Me.Controls.Find("Textbox" & i.ToString, True) 
     If matches IsNot Nothing AndAlso matches.Length = 1 Then matches(0).Enabled = True 
    Next 
End Sub