我有2个checklistbox控件,并且希望第二个控件中的项目能够镜像第一个控件的选中状态。例如:如何将一个CheckedListBox中的选中项目反映到另一个?
Checklistbox1 = APPLE,MANGGO,香蕉,草莓,葡萄
然后我检查manggo和葡萄。
checklistbox2 = 0,1,0,0,1
我怎么去呢?
我有2个checklistbox控件,并且希望第二个控件中的项目能够镜像第一个控件的选中状态。例如:如何将一个CheckedListBox中的选中项目反映到另一个?
Checklistbox1 = APPLE,MANGGO,香蕉,草莓,葡萄
然后我检查manggo和葡萄。
checklistbox2 = 0,1,0,0,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
如果你有一个很大的列表,这可能会更有效一些,但最终会得到相同的结果。
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
你也可能希望有你的列表框设置为true的checkonclick属性来拯救你不必点击两次项目 - 和它产生与我的两个代码和@josh代码更consitent的结果,但如果您在选择某件商品时需要做其他任何事情,则可能需要将其关闭
但在checkedlistbox2中没有项目,并且在checkedlistbox1中列出了来自数据库的项目 – Antroyz
因此,您需要在开始时列出项目列表checkedlistbox1,但没有在checkedlistbox2中。当您检查checkedlistbox1中的项目时,是否希望仅使用checkedlistbox1中的项目的检查状态或checkedlistbox1中所有项目的文本填充checkedlistbox2?您能否显示您用来填充checkedlistbox1的代码? –
@ant - 我不知道你是否收到上述评论的通知 - 但如果你可以让我知道你的答案,我可以更多地考虑它 - –