【问题标题】:Is it possible to set a checked listview item to mixed state?是否可以将选中的列表视图项设置为混合状态?
【发布时间】:2010-11-06 01:20:39
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net listview checkbox checkedlistbox


    【解决方案1】:

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

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

    (完成工作后,我不得不说它没有像仲裁者所说的那么容易)

    【讨论】:

      【解决方案2】:

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

      1. 创建具有 3 个状态的状态 ImageList(您可以使用 CheckBoxRenderer 创建图像)
      2. 将此图像列表分配给列表视图
      3. 然后您需要处理 OnMouseDown(或 OnMouseClick)和 OnKeyDown 事件并为所需列表项转换状态图像

      当然你还需要编写几个辅助方法来获取检查状态等。但总的来说这种解决方案比较容易实现。

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

      【讨论】:

      【解决方案3】:

      ListView 没有不确定的状态。

      【讨论】:

      • 我知道它不是 Windows 窗体控件中的公开属性;我在问是否有其他方式。
      猜你喜欢
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 2017-09-04
      • 2019-04-05
      • 2021-11-26
      • 1970-01-01
      相关资源
      最近更新 更多