Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以将选中的listview项设置为混合状态?_C#_.net_Listview_Checkbox_Checkedlistbox - Fatal编程技术网

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

C# 是否可以将选中的listview项设置为混合状态?,c#,.net,listview,checkbox,checkedlistbox,C#,.net,Listview,Checkbox,Checkedlistbox,复选框控件公开布尔选中的和系统.Windows.Forms.CheckState枚举检查状态属性,允许您将控件设置为选中、未选中或混合状态(不确定的枚举值) 我想将列表视图项的状态设置为不确定,但似乎只有选中的属性可用。那么,有没有一种方法可以通过窗口消息或类似的技巧将其设置为混合状态?ListView没有不确定状态。您可以使用以下解决方法: 创建具有3种状态的状态图像列表(您可以使用创建图像) 将此图像列表指定给列表视图 然后,您需要为所需列表项处理OnMouseDown(或OnMouseCl

复选框
控件公开布尔
选中的
系统.Windows.Forms.CheckState
枚举
检查状态
属性,允许您将控件设置为选中、未选中或混合状态(
不确定的
枚举值)


我想将
列表视图
项的状态设置为
不确定
,但似乎只有
选中的
属性可用。那么,有没有一种方法可以通过窗口消息或类似的技巧将其设置为混合状态?

ListView没有不确定状态。

您可以使用以下解决方法:

  • 创建具有3种状态的状态图像列表(您可以使用创建图像)
  • 将此图像列表指定给列表视图
  • 然后,您需要为所需列表项处理OnMouseDown(或OnMouseClick)和OnKeyDown事件以及移位状态图像
  • 当然,您还需要编写几个helper方法来获取checked state等,但一般来说,此解决方案相对容易实现

    实际上,内部ListView实现也执行相同的操作,但此逻辑隐藏在comctl32.dll中。

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

    查看演示的“简单”选项卡以查看它们的实际操作


    (完成这项工作后,我不得不说它不像仲裁者建议的那样容易)

    我知道它不是Windows窗体控件中的公开属性;我在问是否有其他的方法。这是很久以前的事了,但我想我忘记接受这个答案了。我最终按照此过程滚动了我自己的控件,并将其放入我的BSD许可的Aero.control pack中: