vb.net - 需要四个复选框的代码,显示十种不同条件的味精
问题描述
我在 winform 上有四个复选框,用户必须在预定义的条件下从中选择。也就是说,如果用户选择 chkbx1 或 chkbx2 或 chkbx3 或 chkbx4(其中任何一个),则每个选择都有不同的消息要显示。
第二个条件用户可以选择任意两个 chkbx 例如(chk1 +chkbx2,或 chkbx1+chkbx3,或 chkbx1+chkbx4),每个选择 hv 不同的消息显示。
第三个条件可以选择任意三个复选框(chkbx 1+2+3 或 1+3+4,或 1+2+4)。每个选择 hv 不同的 msg 来显示
第四个条件所有四个 hv 都选择在 btnclck 上显示 msg.......用户 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
解决方案
我会给你一些指示。你是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 种可能结果的方式可能更具可读性。事实上,这取决于你的盒子是什么意思。第一个示例使用与数字文件系统权限类似的逻辑,因此对于某些系统,这种方式可能更容易,而如果您必须显示的每个组合都无法系统化,那么您可能会更喜欢另一个组合。
祝好运并玩得开心点!
推荐阅读
- django - Django:如何在 html 模板中获取字符串的第一个单词?
- c - GLib 中的 GRefString 实现是什么?
- reactjs - FlatList 更新错误的元素
- python - _tkinter.TclError:错误选项“-cloumn”:必须是 -column、-columnspan、-in、-ipadx、-ipady、-padx、-pady、-row、-rowspan 或 -sticky
- c# - 如何使用 XUnit 对 Cosmos DB 中的 LINQ 查询进行单元测试
- python - Python pandas:计算空数据框的平均值时如何返回0作为值
- go - 找出软件包的安装次数
- npm - 安装包时,是什么决定了 package.json 中依赖项的 ^ 版本运算符?
- css - CSS 位置:绝对;和插图:0;对图像元素的影响为零
- api - 验证谷歌分析 API