如果块,如何简化复杂的 4k 行?
How to simplify a complex 4k lines if block?
我试过案例但不喜欢
也许是白色 "fore cycle or while"
我使用 visual basic 2016
我有10个复选框,3个从0到9的随机数,
如果3个复选框是白色的,与"randomly generated"相同的3个数字被选中一个文本框成为
"the same number as 3 number"
这是复选框和文本框的 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(来自 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)
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
我试过案例但不喜欢
也许是白色 "fore cycle or while"
我使用 visual basic 2016
我有10个复选框,3个从0到9的随机数,
如果3个复选框是白色的,与"randomly generated"相同的3个数字被选中一个文本框成为
"the same number as 3 number"
这是复选框和文本框的 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(来自 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)
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