如何将检查的项目从一个CheckedListBox镜像到另一个?

时间:2015-11-02 04:11:50

标签: vb.net checklistbox

我有2个checklistbox控件,并希望第二个控件中的项目镜像第一个控件中的检查状态。例如:

  

Checklistbox1 = APPLE,MANGGO,BANANA,STRAWBERRY,GRAPE

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

  

checklistbox2 = 0,1,0,0,1

我该怎么做?

2 个答案:

答案 0 :(得分:0)

这应该可以实现你想要的。请注意,如果您有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

答案 1 :(得分:0)

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

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的代码产生更多合理的结果,但是如果您需要当您选择某个项目时,您可能需要关闭其他任何内容