【问题标题】:Set CheckBox Checked based on CheckBoxes of a GroupBox根据 GroupBox 的 CheckBoxes 设置 CheckBox Checked
【发布时间】:2017-01-10 01:05:24
【问题描述】:

早安 我想问一些与复选框相关的问题 我必须一组复选框,它看起来像这样

我的问题是,当我选中 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的任何帮助

【问题讨论】:

  • 这些 CheckBox19 ~ 23 是什么,这是 Requisition 中的复选框吗?
  • 是的,先生,这是真的,我的意思是正确的
  • 检查我的答案,如果有效,请告诉我。不过还没有测试过。
  • 我更新了答案。当我的代码中的所有内容都未选中时,看到了一些逻辑问题。试试新的。

标签: vb.net winforms checkbox groupbox


【解决方案1】:

这里,Checkbox1 到 Checkbox5 是Purchase Requisition 组框内的复选框的假定名称。

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

【讨论】:

  • TYSM 先生
  • 没问题!编码愉快!
  • Classic Savory 的折扣会更好。笑话朗。呵呵
  • 当然,但不是今天,因为我还不是这里的常客,呵呵
  • TYSSSSM 期待在我的帖子中再次见到你 TYSM
【解决方案2】:

将 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 是您要根据CheckBoxGroupBox1 控件来选中或取消选中的那个。

【讨论】:

  • 这应该是答案。顺便说一句,Linq 的用法很好。
  • 欢迎,很高兴看到人们以正确的方式使用... ;)
猜你喜欢
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 2011-03-08
  • 1970-01-01
  • 2021-07-15
相关资源
最近更新 更多