vb.net - 当 x 个复选框被选中时,对其余的做 x
问题描述
大家好,所以我无法弄清楚如何检查 GroupBox 中名为“Toppings”的 3 个复选框是否被选中。我必须这样做,以便在检查不同大小的比萨饼时,它会在总数中增加一定的数量,但我可以尝试自己弄清楚。我想出了如何让它工作,但它不是通用的,所以所有的复选框都可以使用它。
If CheckBox1.Checked = True Then
lblTest.Text = 1
Else
If lblTest.Text <= 0 Then
lblTest.Text = 0
Else
lblTest.Text -= lblTest.Text
End If
End If
标签的使用只是为了测试目的,看看我是否可以在检查和取消检查时将其设置为 3 并返回到 0。我想要一个方法去检查复选框中的变化并将1添加到一个名为TopNum的变量中。因此,当它达到 3 时,它会打开一个名为 fTop 的布尔值,因此之后的每个其他复选框都会被添加到总数中。然后,这可以帮助我弄清楚如何将它应用于比萨大小,通过添加一个乘数来赋予它不同的浇头价格金额。
解决方案
给定一个名为 GroupBoxToppings
和一个名为 的 Integer 字段TopNum
,我会这样做:
TopNum = Toppings.Controls.OfType(Of CheckBox)().Count(Function(cb) cb.Checked)
If TopNum >= 3 Then
'...
End If
您可以将其放在CheckChanged
所有复选框的事件处理程序中。或者更好的是,所有复选框都可以具有相同的事件处理程序,其中包含此代码。
另外,我可能会删除If
条件并TopNum
从字段更改为属性。然后If
条件将进入属性设置器。
Public Property TopNum As Integer
Get
Return _topNum
End Get
Set (value As Integer)
_topNumn = value
If value >= 3 Then
'...
Else
'...
End If
End Set
End Property
Private _topNum As Integer = 0
Public Sub ToppingsChanged(sender As Object, e As EventArgs)
TopNum = Toppings.Controls.OfType(Of CheckBox)().Count(Function(cb) cb.Checked)
End Sub
Public Sub New()
IntializeComponent()
For Each cb As CheckBox In Me.Controls.OfType(Of CheckBox)()
AddHandler cb, AddressOf ToppingsChanged
Next
End Sub
推荐阅读
- python - 从递归函数中获取两个不同的值?
- java - 问题 sql 请求返回 null 尽管它在 xampp SGBD 中返回正确的值
- c++ - c++ 使用包含向量的类时 - 候选人需要 2 个参数,提供 0
- csv - 在 Mezzio 框架 (Zend/Laminas) 中下载 CSV
- javascript - 如何获得 Chrome 的精确平滑滚动功能?
- android - 世博会开始工作,但世博会构建 apk 没有
- next.js - TailwindCSS 和 next.js - 无法应用自定义颜色
- python - 在 Django 模型中更改 FileField
- docker - kibana&elasticsearch 无法在同一容器中的 docker 下连接
- php - MYSQL TIMESTAMP 时添加 DATE_FORMAT 则输出为空白,PHP 冲突?