2009-03-12 8 views
0

J'ai un treeView affiché sur un winform.Maintenant quand je clique sur un xmlnode dans l'arborescence ses attributs sont affichés dans la listbox.Maintenant j'ai divisé toute la logique dans l'interface utilisateur et partie arrière. Maintenant ce que je veux que ma classe back end contienne la méthode pour afficher atrributes (nom et valeur) du nœud xml cliqué et ils sont stockés dans un tableau et il est renvoyé comme une chaîne à ma classe front end dans l'événement treev_AfterSelect. Comment puis-je faire? Je dois stocker des attributs du nœud que je clique sur WinForm dans un tableau de chaînes et d'affichage dans listbox.Here est le code ce que j'ai pour ma classe Backhand enter code hereIndexOutOfRangeException lors de l'accès aux attributs via le tableau String?

public string[] selectedNode(XmlNode eventNode) 
    { 
     XmlAttributeCollection attCol = eventNode.Attributes; 
     string[] strArray = new string[attCol.Count]; 
     if (attCol != null) 
      for(int i = 0; i <= attCol.Count;i++) 
      { strArray[i] = "Attribute name: " + attCol[i].Name+","+" Attribute value: " + attCol[i].Value;//IndexOutOfRange Exception 
        } 
      return strArray; 
    } 

Ici je suis obtenir une exception de IndexOutOfRangeException: L'index transmis est hors de portée. sur cette ligne

strArray[i] = "Attribute name: " + attCol[i].Name+","+" Attribute value: " + attCol[i].Value; 

Mon frontal (UI) classe contient ce code pour récupérer l'attribut et les valeurs, l'affichage sur Listbox.

private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) 
    { 
     classObj = new MytreeNodeClass(); 
     listBox1.Items.Clear(); 
     XmlNode xNode = e.Node.Tag as XmlNode; 
     string[] arrStr = classObj.selectedNode(xNode); 
     listBox1.Items.Add(arrStr); //Is this the correct syntax to retrieve the data in listbox?? 
    } 

Pouvez-vous s'il vous plaît aider où je vais mal? Quoi et où mettre exactement pour supprimer l'exception et exécuter le code avec succès? Je ne veux pas que Treenode soit utilisé en revers. Merci ....

Répondre

4

Vous allez trop loin dans votre boucle.

for(int i = 0; i <= attCol.Count;i++) 

devrait être

for(int i = 0; i < attCol.Count;i++) 
+0

Hey merci pour la réponse, mais en listbox il est affiché String [] Tableau Can u plz me dire ce que sera le bon code pour obtenir le résultat en listbox? Merci ... pour répondre à votre réponse .. –

Questions connexes