使用循环缩短VB.NET代码中的对象名称

时间:2014-04-07 14:42:58

标签: vb.net visual-studio-2008

我有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

任何想法如何实现这一目标?

4 个答案:

答案 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

下一步