The TreeNode
itself does not have any Enabled
property, so you will need to find some means of tracking that state. One way to do this is to create a new class that inherits TreeNode
and that features an Enabled
property. Another way is to maintain a list of disabled tree nodes.
Once that is done, you can use the ForeColor
property of the TreeNode
to have it appear grayed out (for instance using the SystemColors.GrayText
value).
Finally you can use the BeforeSelect
event to evaluate whether it's OK for the user to select a particular node, and use the Cancel
property of the event args in that event to prevent selecting it if that node is disabled:
private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = !NodeIsEnabled(e.Node);
}