Vb.net 选中x个复选框后,对其余部分执行x

Vb.net 选中x个复选框后,对其余部分执行x,vb.net,Vb.net,大家好,所以我很难确定如何检查组框中名为“Toppings”的3个复选框是否被选中。我必须这样做,这样当检查不同尺寸的比萨饼时,它会在总数中增加一定数量,但我可以试着了解自己。我知道如何使它工作,但它不是通用的,所以所有的复选框都可以使用它 如果CheckBox1.Checked=True,则 lblTest.Text=1 其他的 如果lblTest.Text给定一个名为Toppings的分组框和一个名为TopNum的整数字段,我会这样做: TopNum = Toppings.Controls.

大家好,所以我很难确定如何检查组框中名为“Toppings”的3个复选框是否被选中。我必须这样做,这样当检查不同尺寸的比萨饼时,它会在总数中增加一定数量,但我可以试着了解自己。我知道如何使它工作,但它不是通用的,所以所有的复选框都可以使用它

如果CheckBox1.Checked=True,则
lblTest.Text=1
其他的

如果lblTest.Text给定一个名为
Toppings
的分组框和一个名为
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

给定名为
Toppings
的分组框和名为
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

对于记录,您可以将
Where(Function(cb)cb.Checked).Count()替换为
Count(Function(cb)cb.Checked)
。如何使用第一种方法?这个放在哪里?在它自己的sub中,然后在复选框中调用该sub?如果是这样的话,就不能让它发挥作用。很抱歉,我还是个新手,不知道应该把它放在哪里。编辑:找到它,用定时器让它工作。非常感谢你们两位对我的帮助!不!不要使用计时器。这是CheckChanged事件的事件处理程序。哦,那我该怎么做呢?对于记录,您可以将
Where(Function(cb)cb.Checked).Count()替换为
Count(Function(cb)cb.Checked)
。我该如何使用第一种方法?这个放在哪里?在它自己的sub中,然后在复选框中调用该sub?如果是这样的话,就不能让它发挥作用。很抱歉,我还是个新手,不知道应该把它放在哪里。编辑:找到它,用定时器让它工作。非常感谢你们两位对我的帮助!不!不要使用计时器。这是CheckChanged事件的事件处理程序。哦,那我该怎么做呢?