2010-08-05 13 views
25

Estoy experimentando con una vista de árbol en una pequeña aplicación C#/Winforms. He asignado programáticamente una ImageList a la vista de árbol, y todos los nodos muestran sus iconos muy bien, pero cuando hago clic en un nodo, su icono cambia (a la primera imagen en ImageList). ¿Cómo puedo hacer para que el ícono no se modifique?Cómo evitar winforms icono de vista en árbol cambia cuando el elemento seleccionado

BTW: El "SelectedImageIndex" está establecido en "(ninguno)", ya que realmente no sé en qué establecerlo, ya que el índice de la imagen es diferente para los nodos (¿supongo?).

ACTUALIZACIÓN: Este es el código de la aplicación (estoy usando Visual Studio Express 2008):

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      treeView1.BeginUpdate(); 
      treeView1.Nodes.Clear(); 
      treeView1.Nodes.Add("root","Project", 0); 

      treeView1.Nodes[0].Nodes.Add("Foo", "Foo", 2); 
      treeView1.Nodes[0].Nodes[0].Nodes.Add("Fizz", "Fizz", 3); 
      treeView1.Nodes[0].Nodes[0].Nodes.Add("Buzz", "Buzz", 3); 

      treeView1.Nodes[0].Nodes.Add("Bar", "Bar", 1); 
      treeView1.Nodes[0].Nodes[1].Nodes.Add("Fizz", "Fizz", 2); 
      treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("Buzz", "Buzz", 3); 

      treeView1.EndUpdate(); 
      treeView1.ImageList = imageList1; 
     } 
    } 
} 

Respuesta

41

Basta con establecer el SelectedImageIndex para cada nodo para el mismo valor que ImageIndex. Por lo tanto, si va a crear el nodo programáticamente:

 TreeNode node = new TreeNode("My Node"); 
     node.ImageIndex = 1; 
     node.SelectedImageIndex = 1; 

O puede especificar la totalidad del lote en el constructor:

 TreeNode node = new TreeNode("My Node" ,1, 1); 

Usted puede hacer lo mismo usando el editor de tiempo de diseño si' volver a agregar nodos en el momento del diseño. Solo necesita establecer SelectedImageIndex en el nivel de nodo y no en el nivel TreeView.

+0

Gran, sabía que esto sería muerto sencilla, simplemente no saber dónde buscar. ¡Gracias! (No puedo aceptar esto como una solución en otros 7 minutos, lo haré cuando pueda). –

3

Hola También puede usar el siguiente código:

TreeNode Node = eventArgs.Node; 
Node.SelectedImageKey = Node.ImageKey; 
Cuestiones relacionadas