Флажки с тремя состояниями в WinForms TreeView

У меня есть 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?

14
задан Community 23 May 2017 в 12:09
поделиться