代码之家  ›  专栏  ›  技术社区  ›  Factor Mystic

是否可以将选中的ListView项设置为混合状态?

  •  1
  • Factor Mystic  · 技术社区  · 15 年前

    这个 CheckBox 控件公开两个布尔值 Checked System.Windows.Forms.CheckState 枚举 CheckState 属性,允许您将控件设置为选中、未选中或混合状态( Indeterminate 枚举值)。

    我想设置一个 ListView 项目状态到 不确定的 ,但只有 选中的 物业似乎可用。那么,有没有一种方法可以将其设置为混合的,可能是通过窗口消息传递或类似的技巧?

    3 回复  |  直到 14 年前
        1
  •  3
  •   arbiter    15 年前

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

    1. 创建具有3个状态的状态图像列表(您可以使用 CheckBoxRenderer )
    2. 将此图像列表分配给列表视图
    3. 然后需要处理onMouseDown(或onMouseClick)和onKeyDown事件,并为所需的列表项移动状态图像。

    当然,您还需要编写几个助手方法来获取检查状态等,但一般来说,这个解决方案相对容易实现。

    实际上,内部listview实现也是这样做的,但是这个逻辑隐藏在comctl32.dll中。

        2
  •  0
  •   Grammarian    15 年前

    ObjectListView (围绕.NET WinForms ListView的开放源代码包装)支持混合状态的复选框。

    看看演示的简单选项卡,就可以看到它们的实际效果。

    (做完工作后,我不得不说 像仲裁人建议的那样简单)

        3
  •  -1
  •   J-16 SDiZ    15 年前

    ListView没有不确定状态。