根据 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
是你想要根据 GroupBox1
的 CheckBox
控件选中或取消选中的那个.
早上好 我想问复选框中相关的内容 我必须要多组复选框,它看起来像这样
我的问题是,每当我选中组 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
是你想要根据 GroupBox1
的 CheckBox
控件选中或取消选中的那个.