Estoy tratando de conseguir que el índice de un elemento de texto en la vista de lista.

Por ejemplo, tengo una vista de lista que contiene los elementos: «elemento1», «item2»..etc

He tratado de obtener el índice de «item2» como este:

MessageBox.Show(listView1.Items.IndexOf("item2");

Pero no funciona…
cualquier ayuda por favor?

  • Cuando usted dice que no está funcionando, ¿a qué te refieres? Está usted recibiendo algún error? ¿El índice que se obtiene es malo? Gracias
  • Obtengo Errores: no se puede convertir de int a string / no se puede convertir de string a Sistema.windows.los formularios.listviewItem
  • Por favor, hacer una prueba con el uso de listView1.Items.IndexOf("item2").ToString() y que me haga saber. Gracias !
  • Gracias por la ayuda..pero todavía se me pone: Error 2 Argumento 1: no se puede convertir de ‘cadena’ a ‘del Sistema.Windows.Los formularios.ListViewItem’
  • He encontrado el error, hemos, por favor ver mi respuesta en un par de minutos a continuación. Gracias
  • Gracias..esperando pacientemente ^_^
  • por favor haev un vistazo a mi post actualizado y que me haga saber. Gracias

InformationsquelleAutor user3379482 | 2014-06-24

2 Comentarios

  1. 8

    ListView.FindItemWithText método hace lo que quiere.
    Check it out: msdn

    var item = listView1.FindItemWithText("item2");
    
    if (item != null)
    {
        MessageBox.Show(listView1.Items.IndexOf(item).ToString());
    }
  2. 2

    Que tenemos un ListView, cuyo IDENTIFICADOR es listView1. En fin podemos obtener los artículos que se encuentran en esta vista de la lista, tenemos que usar el siguiente código:

    listView1.Items

    ¿Cuál es el tipo de listView1.Items ?

    El tipo de listView1.Items es ListViewItemCollection.

    Para más información sobre esto, por favor, eche un vistazo aquí.

    ¿Cuál es el tipo de los objetos que se almacenan en esta colección, listView1.Items ?

    El tipo de los objetos que se almacenan en listView1.Items es ListViewItem.

    Para obtener más documentación acerca de esta clase, por favor, eche un vistazo aquí.

    Por qué MessageBox.Show(listView1.Items.IndexOf("item2"); no funciona ?

    La razón, ¿por qué se produce el error que has publicado en tu comentario es que el método llamado IndexOf, recibe como parámetro un objeto de tipo ListViewItem y se pasa como parámetro a este método en un objeto de tipo string.

    De hecho, como se puede ver aquí, con la firma del método llamado IndexOf es la siguiente:

     public int IndexOf(
        ListViewItem item
    )

    Con el fin de obtener el índice del elemento que desea, usted tiene que pasar para que el método llamado IndexOf un ListViewItem. Por esta razón, le sugiero que pruebe el siguiente código:

    //Select the first ListViewItem of items, whose Text is item2
    ListViewItem item = listView1.Items 
                                 .Cast<ListViewItem>()
                                 .FirstOrDefault(x=>x.Text=="item2");
    
    MessageBox.Show(listView1.Items.IndexOf(item).ToString());
    • Lo siento..Que es lo que tengo Error 2 Argumento 1: no se puede convertir de ‘int’ a ‘cadena’
    • pero tengo sólo este error( los demás se han ido)
    • Tienes razón, por mi culpa. Lo siento. Por favor, intente la versión actualizada de uno ahora y que me haga saber. Gracias
    • Bueno..no hay errores…pero me estoy poniendo -1 !!!! no hay errores de escritura
    • Ok, por favor, dame un par de minutos para averiguar cómo podemos superar esto. Gracias
    • por favor, hacer una prueba con el código actualizado.

Dejar respuesta

Please enter your comment!
Please enter your name here