Aquí podría ser tu PUBLICIDAD


IndexOutOfRangeException al acceder a los atributos a través de String array?

votos
0

Tengo una treeView mostrada en un winform. Ahora cuando hago clic en un xmlnode en la vista de árbol, sus atributos se muestran en el cuadro de lista. Ahora he dividido toda la lógica en la interfaz de usuario y en la parte trasera. Ahora lo que quiero es que mi clase de back-end contenga el método para visualizar atrributes (nombre y valor) del nodo xml en el que se hace clic y se almacenan en una matriz y se devuelve como una cadena a mi clase front-end en el evento treev_AfterSelect. ¿Cómo puedo hacerlo? Necesito almacenar los atributos del nodo. Hago clic en winform en un conjunto de cadenas y lo visualizo en el cuadro de lista. Aquí está el código que tengo para mi clase de revés. enter code here

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;
    } 

Aquí estoy obteniendo una excepción de IndexOutOfRangeException: el índice que se está pasando está fuera de rango. en esta linea

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

Mi clase de front-end (UI) contiene este código para recuperar el atributo y los valores, mostrarlo en 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??
     }

¿Puedes por favor ayudar a dónde estoy yendo mal? ¿Qué y dónde colocar exactamente para eliminar la excepción y ejecutar el código con éxito? No quiero que Treenode se use en revés. Gracias....

Publicado el 12/03/2009 a las 22:00
fuente por usuario crazy_itgal
En otros idiomas...        العربية       

1 respuestas

votos
4

Vas demasiado lejos en tu circuito.

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

debiera ser

for( int i = 0; i < attCol.Count;i++)
Respondida el 12/03/2009 a las 10:04
fuente por usuario Chris Hynes


Aquí podría ser tu PUBLICIDAD