Отключите или выделите серый узел в редакторе TreeNode - PullRequest
18 голосов
/ 23 сентября 2009

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

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

C # с использованием редактора TreeNode в Visual Studio 2005.

Ответы [ 4 ]

26 голосов
/ 23 сентября 2009

Сам по себе TreeNode не имеет никакого свойства Enabled, поэтому вам нужно будет найти некоторые средства для отслеживания этого состояния. Один из способов сделать это - создать новый класс, который наследует TreeNode и имеет свойство Enabled. Другой способ - сохранить список отключенных узлов дерева.

Как только это будет сделано, вы можете использовать свойство ForeColor TreeNode, чтобы оно выглядело серым (например, с использованием значения SystemColors.GrayText).

Наконец, вы можете использовать событие BeforeSelect, чтобы оценить, может ли пользователь выбрать конкретный узел, и использовать свойство Cancel аргументов события в этом событии, чтобы предотвратить его выбор. если этот узел отключен:

private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
    e.Cancel = !NodeIsEnabled(e.Node);
}
10 голосов
/ 22 декабря 2011

Я только что нашел другой способ обработки отключенных триодов. Если вы используете серый цвет в триодах, которые вы не хотите использовать, вы можете запросить цвет и запретить все серые узлы.

    private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
    {
        if(SystemColors.GrayText==e.Node.ForeColor)
            e.Cancel = true;
    }
0 голосов
/ 14 декабря 2015

установить отключенный узел на yourNode.SelectAction = TreeNodeSelectAction.None

Я думаю, вам также нужно отключить расширяемый этот узел yourNode.PopulateOnDemand = false

0 голосов
/ 23 сентября 2009

Два варианта:

  1. Добавление и удаление узлов на лету.
  2. Владелец рисует и обрабатывает щелчки и отправляет их на другой узел.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...