我有一个TreeView,让用户通过选中或取消每个项目的复选框来选择分层数据的某些元素。目前,我使用另一个问题中的复选框隐藏技术来禁用具有子节点的节点上的复选框,如下所示:
☑ Node 1
☐ Node 2
• Node 3
☑ Node 3.1
☑ Node 3.2
• Node 4
☐ Node 4.1
☑ Node 4.2
但更好的解决方案是使用三态复选框来表示父节点,如下所示:
☑ Node 1
☐ Node 2
☑ Node 3
☑ Node 3.1
☑ Node 3.2
☒ Node 4
☐ Node 4.1
☑ Node 4.2
由于Win32中已经提供了此功能,我的问题是如何在不自己绘制框(例如,作为用户绘制控件或使用图像列表)的情况下完成此操作。我对Win32 API一点都不熟悉;如何扩展上面链接的技术以在托管的TreeView控件上启用三态复选框?