Tiv*_*vie 9 vb.net foreach controls object checkedlistbox
我之前填充了CheckedListBox.我希望通过CheckedListBox中的所有项循环"for each/next",并对checkedlistbox的每个迭代元素执行大量"填充"操作.
示例代码:
For Each item In CheckedListBox1.Items
If item.Checked = True Then
'do stuff like
item.BackColor = Color.Blue
Else
'do other stuff
item.BackColor = Color.Brown
End If
Next
Run Code Online (Sandbox Code Playgroud)
问题是"对象"类型而不是"控件"类型.如果我强制迭代var为CheckBox,它会抛出一个InvalidCastException,说'System.String'类型不能与'System.Windows.Forms.CheckBox'类型相关联
我知道我可以很容易地解决这个问题,但是我想在每个/下一个循环中使用a,因为我在该循环中有很多代码(而且不能使用)并且总是直接指向对象是我希望的避免,我真的需要代码尽可能简单.
我实际上花了一个下午寻找这个,但找不到任何答案.
A CheckedListBox不是CheckBox控件的集合.
它没有包装器对象的集合.
CheckedListBox控件是一个简单的控件,只能显示一个简单的项列表; 听起来你正在寻找更强大的东西.(例如,如果没有所有者绘图,则无法更改单个项目的背景颜色)
您应该使用a ListView(CheckBoxes属性设置为true).
然后,您可以遍历ListViewItem其Items集合中的实例.