由于 checkedlistbox 控件不能设置 单个项的 enabled的 属性。所以只能以这样的方式模仿。不过 看不到 被 enabled 的项 变虚 的效果。
我的能力有限,只能做到这个样子了。如果要实现更好的功能和效果。估计只能自己创建一个控件来重写 checkedlistbox 控件了。
定义一个 公共的 ArrayList 对象,
Dim t As ArrayList
装载 checkedlistbox 对象的数据
Me.CheckedListBox1.Items.Add("塞北的雪", True)
Me.CheckedListBox1.Items.Add("Northsnow", False)
Me.CheckedListBox1.Items.Add("CSDN", True)
Me.CheckedListBox1.Items.Add("中国最大的开发者网络", False)
Me.CheckedListBox1.Items.Add("CRC", False)
Me.CheckedListBox1.Items.Add("长春轨道客车股份有限公司", True)
设置某些项为 不可修改(本例中设置 2 和 4)
Dim m() As Integer = {2, 4} '其中的 2,4 分别是 checkedlistbox 中的项的索引
t = New ArrayList(m)
然后在 checkedlistbox的 itemcheck 事件中进行处理

Private Sub CheckedListBox1_ItemCheck()Sub CheckedListBox1_ItemCheck(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles CheckedListBox1.ItemCheck
If t IsNot Nothing AndAlso t.Count > 0 Then
If t.IndexOf(e.Index) >= 0 Then
e.NewValue = e.CurrentValue
End If
End If
End Sub
