Подтвердить что ты не робот

Отключить или серо от node в редакторе TreeNode

Как отключить конкретный node, чтобы пользователь не мог его выбрать. Скрытие его для пользователя также действительно.

Я попробовал свойство Visible, но скрывал все дерево (все узлы). Я хочу, чтобы некоторые из узлов были отключены/скрыты.

С# с помощью редактора Visual Studio 2005 TreeNode.

4b9b3361

Ответ 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