2016-10-19 34 views
1

Si我正在做一个任务,其中有10个RadioButtons表明我有多少个竞争者,并且取决于我在1到10之间挑选的内容,我需要将我的许多相应文本框使我可以填写名字!Visual Basic迭代启用Textbox的

有没有办法对我来说,做一个环路1,我从单选采摘数量之间并说类似

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

由于我TextBoxs被称为TextBox1中以TextBox10

我知道您可以使用&将字符串添加到一起,但是如何才能为对象名称执行此操作?

至于现在我真的有这样做的最愚蠢的方式,这是每一个单选按钮是手动使文本框的正确数量内click事件...

预先感谢您!

回答

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

请记住,订单*可能*在逻辑上不符合表单上控件的位置。如果你有这个问题,你可以创建你自己的'List(of Checkbox)',按照你需要的顺序将这个复选框添加到列表中,然后遍历该集合而不是'Form'的'Controls'。 –

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