【发布时间】:2026-01-20 07:50:01
【问题描述】:
我有 2 个复选框控件,并希望第二个控件中的项目反映第一个控件中的选中状态。例如:
Checklistbox1 = 苹果、芒果、香蕉、草莓、葡萄
然后我检查了芒果和葡萄。
checklistbox2 = 0,1,0,0,1
我该怎么做?
【问题讨论】:
标签: vb.net checklistbox
我有 2 个复选框控件,并希望第二个控件中的项目反映第一个控件中的选中状态。例如:
Checklistbox1 = 苹果、芒果、香蕉、草莓、葡萄
然后我检查了芒果和葡萄。
checklistbox2 = 0,1,0,0,1
我该怎么做?
【问题讨论】:
标签: vb.net checklistbox
这应该完成你想要的。请注意,如果您有 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
此外,您可能希望将列表框的 checkonclick 属性设置为 true 以节省您必须单击该项目两次 - 并且它会使用我的代码和来自 @josh 的代码产生更一致的结果,但如果您需要在选择项目时执行其他任何操作,您可能希望将其关闭
【讨论】: