2010-04-22 3 views
1

Кажется, что флажок, используемый в ListView, когда CheckBoxes = true, не является правильным. Он не отображает состояние MouseOver или MouseDown и не поддерживает состояние неопределенного/промежуточного состояния. Как я могу заменить флажок стандартным элементом управления флажком или взять под свой контроль только этот флажок, чтобы я мог использовать класс CheckBoxRenderer?WinForms: Control ListView checkbox painting

ответ

1

Вы можете дать ObjectListView попытку. Это элемент управления, который наследует от стандарта ListView и добавляет множество новых функций, в том числе флаги tri-state. Если внешний вид флажков не по своему усмотрению, он позволяет владельцам рисовать их.

Лицензия GPL, но есть option переговоров о другой лицензии для коммерческих приложений.

+0

ObjectListView хорош, но также рисует свой собственный прямоугольник выделения, который не соответствует стилю vista, и это будет сложнее, поскольку, похоже, не существует SelectionRenderer или что-то в этом роде – Telanor

+0

ObjectListView имеет свойство UseExplorerTheme, что придает ему точно такой же стиль, как Vista. ObjectListView поддерживает неопределенные флажки состояния. У него есть Renderers, чтобы вы могли рисовать именно то, что хотите. Таким образом, он дает вам все, что вы просили, за исключением состояний MouseOver, которые вы могли бы сделать сами. – Grammarian