Как я могу управлять флажками в .Net Forms.Просмотр дерева?
Вопрос
У меня есть .Сетевое настольное приложение с видом дерева в качестве одного из элементов пользовательского интерфейса.
Я хочу иметь возможность многократно выбирать этот TreeView, только это вообще не поддерживается.
Итак, я добавляю флажки в дерево, моя проблема в том, что можно выбирать только некоторые элементы, а те, которые не доступны, не могут последовательно каскадировать выбор.
Есть ли какой-нибудь способ отключить или скрыть некоторые флажки при отображении других?
Решение
Поведение TreeView по умолчанию заключается в том, что когда Флажки если свойству присвоено значение true, то флажки будут отображаться для всех древовидных узлов.
Поведение, которое вы ищете - отключить или скрыть некоторые флажки - это пользовательская модификация обычного поведения.Вы можете создать пользовательскую реализацию TreeView или TreeNode, которая переопределяет поведение по умолчанию.Еще одна вещь, которую стоит попробовать, - это использовать TreeView.Список состояний собственность.Некоторые сайты, которые стоит посетить для получения дополнительной информации:
- Видишь этот пост на форумы MSDN, которые проходят через реализацию, аналогичную той, которую вы пытаетесь выполнить.
- Кодовый проект: Просмотр дерева с тремя состояниями
- Кодовый проект: Как обрабатывать пользовательские изображения состояния узла в виде дерева (например,флажки для трех состояний)
Другие советы
У меня была очень похожая проблема в редакторе, который я недавно написал. В конце я использовал свойство TreeNode
BackColor
, чтобы определить состояние выбора узла. Затем я написал обработчик для события SelectionChanged
, который проверил состояние клавиш Shift / Control, чтобы определить, был ли выбранный узел добавлен / удален из выделения или создан новый выбор. Также было Generic::List<>
узлов, которые были выбраны в настоящее время для исключения любого поиска по дереву.
Почему .NET не имеет многоэлементного дерева? Существует множество вариантов использования одного, и включение флажков в древовидной структуре является довольно паршивой альтернативой.