2009-09-22 23 views
13

Cómo deshabilito un nodo específico para que el usuario no pueda seleccionarlo. Ocultarlo para el usuario también es válido.Desactivar o atenuar un nodo en el editor TreeNode

Intenté la propiedad Visible pero eso oculta todo el árbol (todos los nodos). Solo quiero que algunos de los nodos estén deshabilitados/ocultos.

C# utilizando Visual Studio 2005 TreeNode Editor.

Respuesta

23

El TreeNode en sí mismo no tiene ninguna propiedad Enabled, por lo que deberá encontrar algún medio para rastrear ese estado. Una forma de hacerlo es crear una nueva clase que herede TreeNode y que tenga una propiedad Enabled. Otra forma es mantener una lista de nodos de árbol desactivados.

Una vez hecho esto, puede usar la propiedad ForeColor del TreeNode para que aparezca en gris (por ejemplo, usando el valor SystemColors.GrayText).

Finalmente, puede utilizar el evento BeforeSelect para evaluar si está bien que el usuario seleccione un nodo en particular, y usar la propiedad Cancel de los argumentos del evento en ese caso para evitar seleccionar si ese nodo está desactivado:

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

dos opciones:

  1. añadir y eliminar los nodos sobre la marcha.
  2. Propietario dibujar y manejar los clics y enviarlo a otro nodo.
7

Acabo de encontrar otra manera de manejar los treenodes desactivados. Si usa gris en los treenodes que no desea usar, puede solicitar el color y no permitir todos los nodos atenuados.

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

conjunto de nodos desactivados por yourNode.SelectAction = TreeNodeSelectAction.None

creo que es necesario desactivar también extensible este nodo yourNode.PopulateOnDemand = false

+1

TreeNodeSelectAction está en System.Web.UI.WebControls espacio de nombres. La pregunta es acerca de Windows Forms. Aclamaciones – liquide

Cuestiones relacionadas