需要四个复选框的代码,以显示十种不同条件的味精

时间:2019-07-17 10:10:53

标签: vb.net

我在winform上有四个复选框,用户必须在预定义的条件下从中选择。也就是说,如果用户选择chkbx1或chkbx2或chkbx3或chkbx4(其中任意一个),则每个选择都将显示不同的味精。

第二种情况下,用户可以选择任意两个chkbx,例如(chk1 + chkbx2,或chkbx1 + chkbx3,或chkbx1 + chkbx4),每个选择都会显示不同的味精。

第三个条件可以选择三个复选框(chkbx 1 + 2 + 3或1 + 3 + 4或1 + 2 + 4)。每个选择要显示的不同的味精

第四个条件,全部四个hv选择要在btnclck上显示味精。......用户hv选择至少一个必选复选框

我正在用if else statement

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If CheckBox1.Checked = True Then
        MessageBox.Show("U choose 1")
    End If
    If CheckBox2.Checked = True Then
        MessageBox.Show("U choose 2")
        If CheckBox3.Checked = True Then
            MessageBox.Show("U choose 3")
            If CheckBox4.Checked = True Then
                MessageBox.Show("U choose 4")
                If CheckBox1.Checked = True Then
                    CheckBox4.Checked = True
                    MessageBox.Show("U choose 5")
                    If CheckBox2.Checked = True Then
                        CheckBox4.Checked = True
                        MessageBox.Show("U choose 6")

                        If CheckBox1.Checked = True Then
                            CheckBox4.Checked = True
                            CheckBox2.Checked = True
                            MessageBox.Show("U choose 7")
                            If CheckBox1.Checked = True Then
                                CheckBox4.Checked = True
                                CheckBox3.Checked = True

                                MessageBox.Show("U choose 8")
                                If CheckBox3.Checked = True Then
                                    CheckBox4.Checked = True
                                    CheckBox2.Checked = True
                                    MessageBox.Show("U choose 9")
                                    If CheckBox1.Checked = True Then
                                        CheckBox4.Checked = True
                                        CheckBox2.Checked = True
                                        CheckBox3.Checked = True
                                        MessageBox.Show("U choose 10")
                                    ElseIf CheckBox1.Checked = False Then
                                        CheckBox4.Checked = False
                                        CheckBox2.Checked = False
                                        CheckBox3.Checked = False
                                        MessageBox.Show("select any one")

                                    End If

                                End If

                            End If



                        End If
                    End If
                End If
            End If
        End If
    End If
End Sub

End Class

在关闭msgbx时,显示另一个msg,并自动选择其他chkbxss

1 个答案:

答案 0 :(得分:0)

我给你一些指导。您是CS学生吗?如果是这样,您会赞赏我的主张包括一些二进制计算。您会看到,有4个复选框,这意味着您有4²种可能的结果。使用嵌入式If进行操作将非常困难。 另一方面,您可以在用户完成使用复选框的那一刻计算您要查找的结果。无论如何,您都可以这样做。这有两种方法可以实现:

Private Sub ShowResult()
    Select Case GetCheckboxesTotal()
        Case 0
            MessageBox.Show("0")
        Case 1
            MessageBox.Show("1")
        Case 2
            MessageBox.Show("2")
        Case 3
            '...
        Case 14
            MessageBox.Show("14")
        Case 15
            MessageBox.Show("15")
    End Select
End Sub

Private Function GetCheckboxesTotal() As Integer
    Dim total As Integer = 0
    If CheckBox1.Checked Then total += 1
    If CheckBox1.Checked Then total += 2
    If CheckBox1.Checked Then total += 4
    If CheckBox1.Checked Then total += 8

    Return total
End Function

此解决方案使用二进制数学的功能!在此答案中,每个复选框都是一个“位”,GetCheckboxesTotal()函数将计算您的用户检查的确切组合,从无复选框(0)到所有复选框(15)。请注意,正如预言的那样,这提供了16种不同的可能性,您可以用一个不错的Select Case来解决它,其中每种可能性都以一种非常易读的方式进行处理。

现在,如果您不喜欢此答案的数学部分怎么办?不用担心,朋友,有一种非常非常简单的方法可以再次处理此问题:

Private Sub ShowResult()
    Select Case True
        Case Not CheckBox1.Checked AndAlso Not CheckBox2.Checked AndAlso Not CheckBox3.Checked AndAlso Not CheckBox4.Checked
            MessageBox.Show("0")
        Case CheckBox1.Checked AndAlso Not CheckBox2.Checked AndAlso Not CheckBox3.Checked AndAlso Not CheckBox4.Checked
            MessageBox.Show("1")
        Case Not CheckBox1.Checked AndAlso CheckBox2.Checked AndAlso Not CheckBox3.Checked AndAlso Not CheckBox4.Checked
            MessageBox.Show("2")
        Case CheckBox1.Checked AndAlso CheckBox2.Checked AndAlso Not CheckBox3.Checked AndAlso Not CheckBox4.Checked
            '...
        Case Not CheckBox1.Checked AndAlso CheckBox2.Checked AndAlso CheckBox3.Checked AndAlso CheckBox4.Checked
            MessageBox.Show("14")
        Case CheckBox1.Checked AndAlso CheckBox2.Checked AndAlso CheckBox3.Checked AndAlso CheckBox4.Checked
            MessageBox.Show("15")
    End Select
End Sub

这种处理16种可能结果的方式可能更具可读性。实际上,这取决于盒子的含义。第一个示例使用了与numeric file system permissions类似的逻辑,因此在某些系统中,这种方式可能会更容易,而如果您必须展示的每个组合都无法系统化,那么您可能会更爱另一个。

祝你好运,玩得开心!