2009-09-22 2 views
13

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

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

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

ответ

23

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

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

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

private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e) 
{ 
    e.Cancel = !NodeIsEnabled(e.Node); 
} 
0

два варианта:

  1. Добавление и удаление узлов на лету.
  2. Владелец рисует и обрабатывает клики и отправляет их на другой узел.
7

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

private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e) 
    { 
     if(SystemColors.GrayText==e.Node.ForeColor) 
      e.Cancel = true; 
    } 
-2

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

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

+1

TreeNodeSelectAction находится в System.Web.UI.WebControls пространстве имен. Вопрос о Windows Forms. ура – liquide

Смежные вопросы