我有5个文本框,我想用for循环调用它的名字,如何做到这一点:
textbox1.backcolor = color.Lightblue
textbox2.backcolor = color.Lightblue
textbox3.backcolor = color.Lightblue
textbox4.backcolor = color.Lightblue
textbox5.backcolor = color.Lightblue
我想知道如何使用循环缩短代码,到目前为止我唯一的线索就是这段代码:
Public Sub ShortCode
For i = 1 to 5
textbox(i).backcolor = color.lightblue
Next
End Sub
任何想法如何实现这一目标?
答案 0 :(得分:2)
假设您坚持使用命名约定,则无需将文本框添加到数组中。使用Control.Controls
。此函数直接在某个容器内查找控件,即Me.Controls
仅搜索表单(Me),而不搜索容器(如面板和组框)。
For i = 1 to 5
CType(Me.Controls("textbox" & i.ToString()), TextBox).BackColor = Color.LightBlue
Next
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controls(v=vs.110).aspx
与LINQ
在一行中的类似(不相同)解决方案Me.Controls.OfType(Of Control).
Where(Function(c As Control) c.Name.StartsWith("textbox")).
ToList().ForEach(Sub(c) c.BackColor = Color.Red)
答案 1 :(得分:1)
创建TextBox控件的数组,然后按照建议迭代它们。下面是未经测试的代码,改编自http://bytes.com/topic/visual-basic-net/answers/846341-array-textbox,但应该让你到那里。
Dim textboxes As TextBox()
textboxes = New TextBox() {TextBox1, TextBox2, TextBox3};
For i = 1 to 3
textbox(i).backcolor = color.lightblue
答案 2 :(得分:0)
如果上面的答案不起作用,请尝试这个
Public Sub ShortCode
dim i = 1
for i >= 5
textbox(i).backcolor = color.lightblue
i = i + 1
Next
End Sub
答案 3 :(得分:0)
Dim TextBoxBag()As TextBox
TextBoxBag = {TextBox1,TextBox2,TextBox3,TextBox4,TextBox5}
对于count = 0到Ubound(TextBoxBag)
TextBoxBag(count).BackColor = Color.LightBlue
下一步