【问题标题】:How can I mirror checked items from one CheckedListBox to another?如何将选中的项目从一个 CheckedListBox 镜像到另一个?
【发布时间】:2026-01-20 07:50:01
【问题描述】:

我有 2 个复选框控件,并希望第二个控件中的项目反映第一个控件中的选中状态。例如:

Checklistbox1 = 苹果、芒果、香蕉、草莓、葡萄

然后我检查了芒果和葡萄。

checklistbox2 = 0,1,0,0,1

我该怎么做?

【问题讨论】:

    标签: vb.net checklistbox


    【解决方案1】:

    这应该完成你想要的。请注意,如果您有 CheckedListBox2_SelectedIndexChanged 事件,您可能会得到意想不到的结果,因为此代码会触发它。

    Private Sub CheckedListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CheckedListBox1.SelectedIndexChanged
        Dim i As Integer
        For i = 0 To CheckedListBox2.Items.Count - 1
            CheckedListBox2.SetItemChecked(i, False)
        Next
        For Each i In CheckedListBox1.CheckedIndices
            CheckedListBox2.SetItemChecked(i, True)
        Next
    End Sub
    

    【讨论】:

      【解决方案2】:

      如果您的列表很大,这可能会更有效率,但您最终会得到相同的结果。

      Private Sub CheckedListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CheckedListBox1.SelectedIndexChanged
          Dim i As Integer
          For i = 0 To CheckedListBox2.Items.Count - 1
              CheckedListBox2.SetItemChecked(i, CheckedListBox1.GetItemCheckState(i))
          Next
      End Sub
      

      此外,您可能希望将列表框的 checkonclick 属性设置为 true 以节省您必须单击该项目两次 - 并且它会使用我的代码和来自 @josh 的代码产生更一致的结果,但如果您需要在选择项目时执行其他任何操作,您可能希望将其关闭

      【讨论】:

      • 但是在checkedlistbox2 中没有项目并且在checkedlistbox1 中来自数据库的列表项,
      • 所以你一开始在checkedlistbox1中有一个项目列表,但在checkedlistbox2中没有。检查checkedlistbox1 中的项目时,是否希望checkedlistbox2 仅填充checkedlistbox1 中项目的检查状态或checkedlistbox1 中所有项目的文本?你能展示一下你用来填充checkedlistbox1的代码吗?
      • @ant - 我不知道你是否收到关于上述评论的通知 - 但如果你能让我知道你的答案,我可以进一步调查 - 干杯
      最近更新 更多