根据 GroupBox 的 CheckBoxes 设置 CheckBox Checked

Set CheckBox Checked based on CheckBoxes of a GroupBox

早上好 我想问复选框中相关的内容 我必须要多组复选框,它看起来像这样

我的问题是,每当我选中组 Purchase Requisition 中的任何复选框时,如何选中复选框 Purchase Requisition,如果所有复选框都未选中,则复选框 Purchase Requisition 未选中。

我有这段代码,我把这段代码放在 Groupbox 内的所有复选框上 Purchase Requisition

  Sub check_Purchase_Req()
        Dim oCtl As Control
        Dim iX As Integer

        For Each oCtl In GroupBox3.Controls
            If TypeName(oCtl) = "CheckBox" And oCtl.Enabled = True Then iX = iX + 1

            If iX > 0 Then
                CheckBox1.Checked = True

            ElseIf CheckBox19.Checked = False And CheckBox20.Checked = False And CheckBox21.Checked = False And CheckBox22.Checked = False And CheckBox23.Checked = False Then

                CheckBox1.Checked = False
                Exit For
            End If
        Next
    End Sub

但是这段代码不符合我的需要

非常感谢 TYSM

这里,Checkbox1 到 Checkbox5 是 Purchase Requisition 组框内 Checkboxes 的假设名称。

chkPurchaseRequisition 也是您的采购申请复选框的复选框

试试这个:

 Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged, CheckBox5.CheckedChanged
    If sender.Checked = True Then
        chkPurchaseRequisition.Checked = True
    Else
        Dim AllUnchecked As Boolean = True
        For Each c As Control In grpboxPurchaseRequisition.Controls.OfType(Of CheckBox)()
            If DirectCast(c, CheckBox).Checked = True Then
                AllUnchecked = False
                Exit For
            End If
        Next
        If AllUnchecked = True Then
            chkPurchaseRequisition.Checked = False
        End If
    End If

End Sub

使用 linq 完成此类任务让生活更轻松:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    GroupBox1.Controls.OfType(Of CheckBox).ToList() _
             .ForEach(Sub(c) AddHandler c.CheckedChanged, AddressOf CheckChanged)
End Sub
Private Sub CheckChanged(sender As Object, e As EventArgs)
    CheckBox1.Checked = GroupBox1.Controls.OfType(Of CheckBox).Any(Function(c) c.Checked)
End Sub

在上面的代码中,我假设 GroupBox1 是正确的,CheckBox1 是你想要根据 GroupBox1CheckBox 控件选中或取消选中的那个.