Отключить или серо от node в редакторе TreeNode
Как отключить конкретный node, чтобы пользователь не мог его выбрать. Скрытие его для пользователя также действительно.
Я попробовал свойство Visible, но скрывал все дерево (все узлы). Я хочу, чтобы некоторые из узлов были отключены/скрыты.
С# с помощью редактора Visual Studio 2005 TreeNode.
Ответы
Ответ 1
Сама TreeNode
не имеет никакого свойства Enabled
, поэтому вам нужно будет найти некоторые способы отслеживания этого состояния. Один из способов сделать это - создать новый класс, который наследует TreeNode
и обладает свойством Enabled
. Другой способ - сохранить список отключенных узлов дерева.
Как только это будет сделано, вы можете использовать свойство ForeColor
свойства TreeNode
, чтобы оно выглядело серым (например, используя значение SystemColors.GrayText
).
Наконец, вы можете использовать событие BeforeSelect
, чтобы оценить, правильно ли пользователю выбрать конкретный node, и использовать Cancel
свойство события args в этом случае предотвращает его выбор, если этот node отключен:
private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = !NodeIsEnabled(e.Node);
}
Ответ 2
Я просто нашел другой способ обработки отключенных treenodes. Если вы серые в treenodes, которые вы не хотите использовать, вы можете запросить цвет и не разрешить все серые узлы.
private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
if(SystemColors.GrayText==e.Node.ForeColor)
e.Cancel = true;
}
Ответ 3
Два варианта:
- Добавление и удаление узлов на лету.
- Владелец рисует и обрабатывает клики и отправляет их другому node.
Ответ 4
отключить node на yourNode.SelectAction = TreeNodeSelectAction.None
Я думаю, вам также нужно отключить расширение этого node
yourNode.PopulateOnDemand = false