2010-08-05 4 views
25

Sto sperimentando una vista ad albero in una piccola applicazione C#/Winforms. Ho assegnato programmaticamente una ImageList alla treeview e tutti i nodi mostrano le loro icone in modo corretto, ma quando faccio clic su un nodo, la sua icona cambia (alla primissima immagine in ImageList). Come posso ottenere che l'icona rimanga invariata?Come evitare l'icona di treeview winforms quando si seleziona l'elemento

BTW: "SelectedImageIndex" è impostato su "(nessuno)", poiché non so davvero su cosa impostarlo, poiché l'indice dell'immagine è diverso per i nodi (credo?).

UPDATE: Ecco il codice dell'applicazione (sto 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; 
     } 
    } 
} 

risposta

41

È sufficiente impostare la SelectedImageIndex per ogni nodo per lo stesso valore di ImageIndex. Quindi, se si sta creando il nodo programmaticamente:

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

alternativa, è possibile specificare l'intero lotto nel costruttore:

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

È possibile fare la stessa cosa usando l'editor fase di progettazione, se si' re aggiunta di nodi in fase di progettazione. Devi solo impostare SelectedImageIndex a livello di nodo e non a livello di TreeView.

+0

Grande, sapevo che questo sarebbe morto-semplice, basta non sapere dove cercare. Grazie! (Non posso accettarlo come soluzione in altri 7 minuti, lo farò quando posso). –

3

Hi È inoltre possibile utilizzare il codice qui sotto:

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