我以前有一个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

问题是这是“对象”类型而不是“控件”类型。如果我强制将var As CheckBox迭代,它将抛出InvalidCastException,表明类型'System.String'不能与类型'System.Windows.Forms.CheckBox'关联。

我知道我可以轻松解决此问题,但是我想在每个/next循环中使用a,因为我在该循环中有很多代码(并且不能使用With),并且总是直接向该对象添加Poit是我想要的避免,我真的需要代码尽可能地简单。

我实际上花了一个下午寻找这个,但找不到任何答案。

最佳答案

CheckedListBox不是CheckBox控件的集合。
它没有包装对象的集合。

CheckedListBox控件是一个简单的控件,它只能显示简单的项目列表。听起来您正在寻找更强大的功能。 (例如,未经所有者绘画就无法更改单个项目的背景颜色)

您应该改为使用ListView(并将CheckBoxes属性设置为true)。
然后,您可以遍历其ListViewItem集合中的Items实例。

10-06 08:23