Как сделать подпрограмму в vb.net? - PullRequest
0 голосов
/ 18 марта 2019

Так что я недавно взял на себя задачу составить небольшую программу, чтобы немного облегчить мою работу.Тем не менее, большая часть кода повторяется, поэтому мне было интересно, есть ли способ сделать это проще.
Ниже приведен код, который я повторяю 46 раз, и несколько переменных меняются каждый раз, как, например, GroupBox от 1 до 46,ComboBox начинается с 1-46, а затем в конце я хочу снять все флажки RadioButton в этом GroupBox.
Вот для первого 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 голосов
/ 18 марта 2019

Конечно. Если вы создаете массив для групповых блоков и еще один для комбо-блоков, помещаете объекты туда, тогда вы можете циклически проходить по вашему массиву и делать то, что нужно сделать, а затем вместо жестко закодированных значений вы можете использовать свой массив в текущий индекс.

0 голосов
/ 18 марта 2019

Вы можете легко изменить эту функцию, чтобы иметь элемент управления 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: я настоятельно рекомендую дать этому элементу управления более описательные имена, чем вы используете здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...