1

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

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

4

3 回答 3

3

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

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

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

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

于 2009-06-26T06:38:56.503 回答
0

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

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

(做完工作,我不得不说这并不像仲裁人建议的那么容易)

于 2009-07-14T11:51:54.583 回答
-1

ListView 没有不确定的状态。

于 2009-06-26T05:34:05.993 回答