2016-09-29 2 views
0

J'ai une question concernant TreeViews et leurs nœuds en C#.C# TreeView, événement lorsque childnode est sélectionné

Ce que j'essaie actuellement de faire. J'ai un TreeView et à côté un TableLayoutPanel. Lorsque je clique sur les nœuds, je veux appeler une méthode spécifique et afficher les données dans le TableLayoutPanel. L'affichage des données fonctionne bien, mais mon problème est que je ne sais pas exactement comment déterminer quel nœud/ChildNode a été sélectionné.

J'ai un TreeView qui ressemble à ceci

Root1 
    R1Child1 
    R1Child2 
Root2 
    R2Child1 
    R2Child2 
Root3 
    R3Child1 
    R3Child2 

Je manipulons actuellement ce par une méthode AfterSelect et il suffit de cocher le nœud sélectionné pour le texte.

private void treeHardware_AfterSelect(object sender, TreeViewEventArgs e) 
{ 

     if (e.Node.Text == SysInfo.CPU.Name) 
     { 
      deleteRows(); 
      initFixedRows(); 
      updateTableCPU(); 
     } 
     else if (e.Node.Text == ramNameIdent) 
     { 
      deleteRows(); 
      initFixedRows(); 
      updateTableRAM(e.Node.Index); 
     } 
     else if (e.Node.Text == "Memory") 
     { 
      deleteRows(); 
      initFixedRows(); 
      loadRAMDetails(0); 
      loadRAMOverview(); 
     } 
     else if(e.Node.Text == "Mainboard") 
     { 
      deleteRows(); 
      initFixedRows(); 
      updateTableMainboard(); 
     } 
     else 
     { 
      Console.WriteLine("ERROR"); 
     } 
} 

Dans mon avis, c'est un moyen très peu pratique pour vérifier ce nœud a été cliqué, car il contrôle simplement cordes, et il nest pas très efficace ..

problème suivant, pour la mémoire de nœud. J'affiche toutes les mémoires physiques installées et ajoute chacune d'elles en tant que nœud enfant. Maintenant, quand je clique sur l'un d'entre eux, il devrait afficher les données de la mémoire sélectionnée dans mon TableLayoutPanel. Mais il montre toujours juste le "dernier".

chapeau Hope vous comprenez ce que je veux dire ... Sinon, il suffit de demander plus d'information :-)

Cheers, Consti

+0

Pourquoi n'utilisez-vous pas la propriété Tag? mettre un ID dans la propriété de l'étiquette qui est unique pour chaque nœud. En ce qui concerne "Next Problem" je n'ai pas compris –

+0

@Shoushou, merci cela va résoudre mon problème! Je travaille dessus merci !!! –

+0

très bien! Je vais le mettre comme la réponse, alors s'il vous plaît acceptez-le! Profitez de la programmation! –

Répondre

0

Utilisez la balise de propriété, mettre un ID dans la propriété tag c'est unique pour chaque noeud