es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede agregar o insertar el elemento en más de un lugar – Error de ListView

Sigo recibiendo un error al intentar agregar un rango de elementos a mi vista de lista.

Error: “No se puede agregar o insertar el elemento en más de un lugar”

Por favor, tenga en cuenta que tengo encabezados de columna.

Aquí está el código de ejemplo:

private void OtherFunction()
{
// pull information and have foreach loop
Add_To_List(Event_Date, Acc_Name, Client_IP, Event_DC, Failure_Code);
}

private void Add_To_List(string date, string user, string ip, string domain, string lockedout)
{
listView1.ListViewItemSorter = null;

// Agregar elemento a la vista de lista.
ListView.ListViewItemCollection new_row = new ListView.ListViewItemCollection(listView1);
new_row.Add(date);
new_row.Add(user);
new_row.Add(ip);
new_row.Add(domain);
new_row.Add(lockedout);
listView1.Items.AddRange(new_row);

// Limpiar datos
new_row.Clear();

}

Este era el código que estaba usando antes que funcionaba pero no era exactamente como lo quería.

string[] new_row = { user, ip, domain, lockedout };
listView1.Items.Add(date).SubItems.AddRange(new_row);

Estaba buscando una mejora en la velocidad.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error “No se pudo agregar ni insertar el elemento en más de un lugar” se produce porque estás tratando de agregar el mismo objeto ListViewItemCollection al control ListView varias veces. Para solucionar este problema, puedes crear un nuevo objeto ListViewItem para cada fila de datos y agregarlos individualmente al control ListView.

    Aquí está una versión actualizada de tu código:

    private void OtraFuncion()
    {
        // obtiene información y tiene un bucle "foreach"
        Agregar_A_Lista(Event_Date, Acc_Name, Client_IP, Event_DC, Failure_Code);
    }
    
    private void Agregar_A_Lista(string fecha, string usuario, string ip, string dominio, string bloqueado)
    {
        listView1.ListViewItemSorter = null;
    
        // Crea un nuevo objeto ListViewItem para cada fila de datos
        ListViewItem nuevo_elemento = new ListViewItem(fecha);
        nuevo_elemento.SubItems.Add(usuario);
        nuevo_elemento.SubItems.Add(ip);
        nuevo_elemento.SubItems.Add(dominio);
        nuevo_elemento.SubItems.Add(bloqueado);
    
        // Agrega el nuevo elemento al control ListView
        listView1.Items.Add(nuevo_elemento);
    }
    

    Esto debería resolver tu problema y mejorar la velocidad para agregar elementos al control ListView.

Comments are closed.