Сам по себе TreeNode
не имеет никакого свойства Enabled
, поэтому вам нужно будет найти некоторые средства для отслеживания этого состояния. Один из способов сделать это - создать новый класс, который наследует TreeNode
и имеет свойство Enabled
. Другой способ - сохранить список отключенных узлов дерева.
Как только это будет сделано, вы можете использовать свойство ForeColor
TreeNode
, чтобы оно выглядело серым (например, с использованием значения SystemColors.GrayText
).
Наконец, вы можете использовать событие BeforeSelect
, чтобы оценить, может ли пользователь выбрать конкретный узел, и использовать свойство Cancel
аргументов события в этом событии, чтобы предотвратить его выбор. если этот узел отключен:
private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = !NodeIsEnabled(e.Node);
}