Как упростить сложные 4k-строки, если блок?

Я пробовал случай, но мне не нравится белый «передний цикл» или «
я использую визуальный базовый 2016

У меня есть 10 флажков, 3 случайных числа от 0 до 9,
если 3 флажка белого цвета, те же 3 числа, что и «случайным образом сгенерированы», проверяются, что текстовое поле станет «тем же номером, что и 3 числа»,

это img флажка и текстовое поле: Link
Это огромное упрощение

        If primoR = 0 Then
        If CheckBox10.Checked Then
            If secondoR = 1 Then
                If CheckBox1.Checked Then
                    If terzoR = 2 Then
                        If CheckBox2.Checked Then
                            TextBox1.BackColor = Color.Green
                        End If
                    ElseIf terzoR = 3 Then
                        If CheckBox3.Checked Then
                            TextBox1.BackColor = Color.Green
                        End If
                    Else
                        TextBox1.BackColor = Color.Black
                    End If
                End If
            End If

        End If
    ElseIf primoR = 1 Then
        If secondoR = 1 Then
            If CheckBox1.Checked Then
                If terzoR = 2 Then
                    If CheckBox2.Checked Then
                        TextBox1.BackColor = Color.Green
                    End If
                ElseIf terzoR = 3 Then
                    If CheckBox3.Checked Then
                        TextBox1.BackColor = Color.Green
                    End If
                Else
                    TextBox1.BackColor = Color.Black
                End If
            End If
        ElseIf secondoR = 2 Then

            If CheckBox2.Checked Then
                If terzoR = 2 Then
                    If CheckBox2.Checked Then
                        TextBox1.BackColor = Color.Green
                    End If
                ElseIf terzoR = 3 Then
                    If CheckBox3.Checked Then
                        TextBox1.BackColor = Color.Green
                    End If
                Else
                    TextBox1.BackColor = Color.Black
                End If
            End If
        End If
    ElseIf primoR = 2 Then
        'ecc...
    Else
        TextBox1.BackColor = Color.Black
    End If
    'checkbox10 = 0 , checkbox1 = 1, checkbox1 = 2

Вот полный код

vba,if-statement,optimization,cascade,

0

Ответов: 2


0

Вы не говорите, на каком языке это, поэтому я не знаю, является ли это VBA (из приложения Office), VB6 или VB.Net или что-то еще. Таким образом, это может не сработать из коробки, но это должно дать вам отправную точку для работы.

  Green = False
  For primoR = 0 To 9
      If CType(Me.Controls("Checkbox" & IIf(primoR = 0, 10, primoR)), CheckboxBox).Checked Then
      For secondoR = 1 To 9
          If CType(Me.Controls("Checkbox" & IIf(secondoR = 0, 10, secondoR)), CheckboxBox).Checked Then
          For terzoR = 0 To 9
              If CType(Me.Controls("Checkbox" & IIf(terzoR = 0, 10, terzoR)), CheckboxBox).Checked Then
                  Green = True
              End If
          Next
      End If
  Next
  TextBox1.BackColor = IIf(Green, Color.Green, Color.Black)

0 принят
Private randomNumbers As New Random
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim randomNumber1 As Integer = randomNumbers.Next(0, 10)
    Dim randomNumber2 As Integer = randomNumbers.Next(0, 10)
    Dim randomNumber3 As Integer = randomNumbers.Next(0, 10)
    Label1.Text = (randomNumber1 + 1).ToString
    Label2.Text = (randomNumber2 + 1).ToString
    Label3.Text = (randomNumber3 + 1).ToString

    Dim checkA = CType(Me.Controls.Item($"CheckBox{randomNumber1 + 1}"), CheckBox)
    Dim checkB = CType(Me.Controls.Item($"CheckBox{randomNumber2 + 1}"), CheckBox)
    Dim checkC = CType(Me.Controls.Item($"CheckBox{randomNumber3 + 1}"), CheckBox)

    If checkA.Checked AndAlso checkB.Checked And checkC.Checked Then
        TextBox1.BackColor = Color.Green
    Else
        TextBox1.BackColor = Color.Black
    End If
End Sub
VBA, если-заявление, оптимизация, каскад,
Похожие вопросы