Можно ли установить проверенный элемент списка в смешанное состояние? - PullRequest
1 голос
/ 26 июня 2009

Элемент управления CheckBox предоставляет оба логических свойства Checked и System.Windows.Forms.CheckState enum CheckState, которые позволяют установить для элемента управления либо проверенное, непроверенное, либо смешанное состояние (значение Indeterminate enum). *

Я хочу установить для ListView состояние элемента значение Indeterminate, но, по-видимому, доступно только свойство Checked. Итак, есть ли способ настроить его на смешанный, возможно, с помощью обмена сообщениями в окне или с помощью подобных приемов?

Ответы [ 3 ]

3 голосов
/ 26 июня 2009

Ну, вы можете использовать следующий обходной путь:

  1. Создание состояния ImageList с 3 состояниями (вы можете создавать изображения, используя CheckBoxRenderer )
  2. Назначить этот список изображений для просмотра списка
  3. Затем вам нужно обработать события OnMouseDown (или OnMouseClick) и OnKeyDown и сместить изображения состояний для необходимого элемента списка

Конечно, вам также нужно написать несколько вспомогательных методов для проверки состояния и т. Д. Но в целом это решение относительно просто реализовать.

На самом деле внутренняя реализация ListView делает то же самое, но эта логика скрыта внутри comctl32.dll.

0 голосов
/ 14 июля 2009

ObjectListView (оболочка с открытым исходным кодом вокруг .NET WinForms ListView) поддерживает флажки со смешанным состоянием.

Взгляните на вкладку Simple демо, чтобы увидеть их в действии.

(Выполнив работу, я должен сказать, что это не так просто, как предполагает арбитр)

0 голосов
/ 26 июня 2009

ListView не имеет неопределенного состояния.

...