如何在VB.NET中为CheckedListBox项着色?

| 我正在VB.NET中制作一个使用CheckedListBox存储项目的个人应用程序。我的表单上有三个按钮,我想用这些按钮将所选项目的颜色更改为(绿色,橙色和红色)。 我已经尝试了许多解决此问题的方法,但没有运气。有人可以伸出援手吗?     
已邀请:
        请改用ListView。它支持复选框和所选项目的颜色。     
        这里有一个非常相似的答案: 对于CheckedListBox中的每个返回为对象而不是控件 基本上,此控件不会执行您想要的操作(至少在没有很多复杂性的情况下)。您需要将控件升级到ListView。     
        您还可以使用外观和行为类似于选中列表框的TreeView:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Me.TreeView1.ShowLines = False

Me.TreeView1.CheckBoxes = True

Dim MyColors() As Color = {Color.Black, Color.Blue, Color.Red, Color.Green, Color.Aqua}

For x As Integer = 0 To 4

Dim NewNode As TreeNode = Me.TreeView1.Nodes.Add(\"Node\" & x)

NewNode.ForeColor = MyColors(x)

Next

End Sub
    
        接受了使用ListView的建议。在Windows 7和Vista盒子上看起来不错,但在XP上,ListView不能正确显示(项目彼此重叠,复选框始终不显示)。检查以确保它不是框架版本问题,并且不是屏幕分辨率问题。最终退回到没有不一致的CheckedListBox实现。 找到了这个解决方案,该解决方案为我完成了CheckedListBox方案中蓝色突出显示的移除。但是,使用它必须以其他方式跟踪选择(全局变量,查看选中的项目等)。 我只需在处理\“ ..._ SelectedIndexChanged \”后清除选定的项目。我在\“ ..._ SelectedIndexChange \”中所做的第一件事是测试是否没有选择项,如果更改则什么也不做。结果是当前选中的项目显示为未选中(实际上未选中,即没有蓝色突出显示),但是CheckBox保持选中状态,指示用户最近的选择。 例子==>
Private Sub ModelCheckedListBox_SelectedIndexChanged(ByVal sender As System.Object,...
    Dim x As Short = ModelCheckedListBox.SelectedIndex
    If x >= 0 Then

  \'Something I always do since the Selection Mode = \"One\" doesn\'t bother to clear
        \'the checks itself

        ModelCheckedListBox.SetItemChecked(x, True)
        If ModelCheckedListBox.CheckedItems.Count > 1 Then
            For Each item In ModelCheckedListBox.CheckedIndices
                If item <> x Then
                    ModelCheckedListBox.SetItemChecked(item, False)
                End If
            Next
        End If
        ModelCheckedListBox.Refresh()

  \'More of your code

        ModelCheckedListBox.ClearSelected()
    End If
End Sub
    

要回复问题请先登录注册