如何在vb.net中创建子例程?

时间:2019-03-18 19:05:11

标签: vb.net radio-button subroutine groupbox

因此,我最近开始考虑自己做一些小程序以使我的工作更轻松一些。但是,许多代码都是重复的,因此想知道是否有一种方法可以使此操作更容易。
下面是我重复执行46次的代码,每次都会更改一些变量,例如GroupBox从1-46开始,ComboBox从1-46开始,然后最后我还要取消选中该GroupBox中的所有RadioButtons。
这是第一个GroupBox:

Private Sub Room105()
    Dim rb = GroupBox1.Controls.OfType(Of RadioButton)().
                       SingleOrDefault(Function(radiobutton) radiobutton.Checked)
    Dim value = If(CStr(rb?.Tag), ComboBox1.Text = V1)
    If rb?.Tag Is Nothing Then ComboBox1.Text = V1
    If ComboBox1.Text = M1 Then
        ListView1.Items.Add(GroupBox1?.Tag).SubItems.Add(value)
        If rb?.Tag = CO Then
            ListView4.Items.Add(GroupBox1?.Tag).SubItems.add(value)
        End If
    ElseIf ComboBox1.Text = M2 Then
        ListView2.Items.Add(GroupBox1?.Tag).SubItems.Add(value)
        If rb?.Tag = CO Then
            ListView4.Items.Add(GroupBox1?.Tag).SubItems.add(value)
        End If
    ElseIf ComboBox1.Text = M3 Then
        ListView3.Items.Add(GroupBox1?.Tag).SubItems.Add(value)
        If rb?.Tag = CO Then
            ListView4.Items.Add(GroupBox1?.Tag).SubItems.add(value)
        End If
    ElseIf ComboBox1.Text = V1 Then
        RadioButton1.Checked = False
        RadioButton2.Checked = False
        RadioButton3.Checked = False
        ListView5.Items.Add(GroupBox1?.Tag).SubItems.Add("Vacant")
    End If
End Sub

2 个答案:

答案 0 :(得分:0)

您可以轻松地修改此函数,以将GroupBox控件(和其他控件)作为该函数的参数:

Private Sub Room105(grpBox As GroupBox, comboBx As ComboBox, lv1 As ListView, lv2 As ListView, lv3 As ListView, lv4 As ListView, lv5 As ListView, rb1 As RadioButton, rb2 As RadioButton, rb3 As RadioButton)
    Dim rb = grpBox.Controls.OfType(Of RadioButton)().
                   SingleOrDefault(Function(radiobutton) radiobutton.Checked)

    Dim value = If(CStr(rb?.Tag), comboBx.Text = V1)
    If rb?.Tag Is Nothing Then comboBx.Text = V1
    If comboBx.Text = M1 Then
        lv1.Items.Add(grpBox?.Tag).SubItems.Add(value)
        If rb?.Tag = CO Then
            ListView4.Items.Add(grpBox?.Tag).SubItems.add(value)
        End If
    ElseIf comboBx.Text = M2 Then
        lv2.Items.Add(GroupBox1?.Tag).SubItems.Add(value)
        If rb?.Tag = CO Then
            lv4.Items.Add(grpBox?.Tag).SubItems.add(value)
        End If
    ElseIf comboBx.Text = M3 Then
        lv3.Items.Add(grpBox?.Tag).SubItems.Add(value)
        If rb?.Tag = CO Then
            lv4.Items.Add(grpBox?.Tag).SubItems.add(value)
        End If
    ElseIf comboBx.Text = V1 Then
        rb1.Checked = False
        rb2.Checked = False
        rb3.Checked = False
        lv5.Items.Add(grpBox?.Tag).SubItems.Add("Vacant")
    End If
End Sub

然后您将根据需要多次调用此函数,并根据需要切换出不同的控件集:

Room105(GroupBox1, ComboBox1, ListView1, ListView2, ListView3, ListView4, ListView5, RadioButton1, RadioButton2, RadioButton3)

PS:我强烈建议为该控件提供比您在此使用的描述性名称更多的名称。

答案 1 :(得分:0)

当然。如果您为组框创建一个数组,为组合框创建另一个数组,则将对象放在此处,然后可以遍历数组并执行需要执行的操作,然后可以在数组上使用数组代替硬编码值当前索引。