VB.Net - 将文本框组合在一起以

时间:2017-04-29 20:42:48

标签: vb.net

我在vb.net中编码并且有3个组,每个组有七个文本框。我需要一种方法来指定我想要一次性更改特定属性的组,以便使大量代码变小。

    If x = 1 Then
        'Group1'
        Textbox1_(x).visible = True
        Textbox2_(x).visible = False
        '...etc
    ElseIf x = 2 Then
        'Group2'
        Textbox1_(x).visible = True
        Textbox2_(x).visible = False
        '...etc
    ElseIf x = 3 Then
        'Group3'
        Textbox1_(x).visible = True
        Textbox2_(x).visible = False
        '...etc
    End If

但是如果可能的话,我想要一个单独的陈述来处理每个群体。 希望有意义,谢谢。

2 个答案:

答案 0 :(得分:1)

使用tag属性。例如,

' for Group 1
Textbox1.Tag = 1
Textbox2.Tag = 1
Textbox3.Tag = 1
' etc for all of group 1
'for Group 2
Textbox4.Tag = 2
Textbox5.Tag = 2
Textbox6.Tag = 2
' etc for all the rest,

然后找到它们,

Dim con As Textbox
If con.Tag = 1 Then   
  con.Visible = True
End If
If con.Tag = 2
  con.Visible = True
End If

看起来如果您使用单独的If Statements而不是ElseIf,它只会使一个组可见。不要使用For Each con In Me.Controls,因为这样可以让所有群体一次可见或不可见。

答案 1 :(得分:0)

将TextBox控件放入数组中:

Dim boxes(6,2) As TextBox
boxes(0,0) = Textbox1_1
boxes(1,0) = Textbox2_1
boxes(3,0) = Textbox3_1
boxes(4,0) = Textbox4_1
'...
boxes(6,2) = Textbox6_2

在为表单调用InitializeComponent()之后,代码需要运行一次。

然后你可以这样做:

Me.SuspendLayout()
boxes(0,x).Visible = True
For i As Integer = 1 To 6
    boxes(i,x).Visible = False
Next i
Me.ResumeLayout()