是否可以将已检查的列表视图项设置为混合状态?

时间:2009-06-26 05:11:20

标签: c# .net listview checkbox checkedlistbox

CheckBox控件公开了布尔CheckedSystem.Windows.Forms.CheckState枚举CheckState属性,这些属性允许您将控件设置为已选中,未选中或混合状态({ {1}}枚举值)。

我想将Indeterminate项的状态设置为ListView,但只有Indeterminate属性似乎可用。那么,有没有办法将它设置为混合,可能是通过窗口消息或类似的技巧?

3 个答案:

答案 0 :(得分:3)

好吧,您可以使用以下解决方法:

  1. 创建具有3种状态的状态ImageList(您可以使用CheckBoxRenderer创建图像)
  2. 将此图像列表分配给列表视图
  3. 然后你需要处理OnMouseDown(或OnMouseClick)和OnKeyDown事件并转换所需列表项的状态图像
  4. 当然,您还需要编写几个辅助方法来获取检查状态等。但一般来说,这个解决方案相对容易实现。

    实际上内部ListView实现也是如此,但这个逻辑隐藏在comctl32.dll中。

答案 1 :(得分:0)

ObjectListView(.NET WinForms ListView的开源包装器)支持混合状态的复选框。

查看演示的“简单”选项卡,了解它们的实际效果。

(完成工作之后,我不得不说,就像仲裁者建议的那样简单)

答案 2 :(得分:-1)

ListView没有不确定状态。