Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    200

    Listview:trovare indice associato a item

    Ciao a tutti,
    ho una Listview ed una stringa, vorrei trovare l'indice corrispondente all'item della Listview il cui valore è uguale a quello della stringa specificata.

    Il mio tentativo è questo: Idx= Listview.Items.IndexOf("stringa")

    Responso del compilatore: "Impossibile convertire il valore di tipo String in System.Windows.Form.Listviewitem".

    Insomma, sembrerebbe che la sintassi sia sbagliata anche se non capisco perchè.

    Qualcuno ha un'idea?

    Grazie

  2. #2
    potresti provare a "ciclare" sugli elementi della listView selezionandoli e controllandoli uno ad uno...
    ad esempio con:

    code
    int IndiceCheCerco
    for (i=0; i++; i<= numeroDiElementiDellaListView)
    {
    listView.SelectedIndex = 1;
    if(listView.SelcetedText == "Stringa")
    IndiceCheCerco = i;
    }
    \code

    Quando esci dal ciclo hai l'indice che ti serve...

    Ciao
    Simona

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    200
    Originariamente inviato da simona_ba
    potresti provare a "ciclare" sugli elementi della listView selezionandoli e controllandoli uno ad uno...
    ad esempio con:

    code
    int IndiceCheCerco
    for (i=0; i++; i<= numeroDiElementiDellaListView)
    {
    listView.SelectedIndex = 1;
    if(listView.SelcetedText == "Stringa")
    IndiceCheCerco = i;
    }
    \code

    Quando esci dal ciclo hai l'indice che ti serve...

    Ciao
    Simona

    Ehemm, sì, grazie, ma volevo proprio evitare di usare tanto prolisso codice.
    Il metodo IndexOf serve proprio a questo, solo che evidentemente ha una sintassi un po' diversa nel caso della ListView.

    Quello che cerco è la giusta sintassi.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    200
    Ecco finalmente la giusta sintassi per ottenere rapidamente l'indice associato ad un elemento della Listview:

    Dim Idx As Integer = mylistview.Items.IndexOfKey("key")

    Nel mio caso l'indice mi serviva per cancellare un elemento conoscendone il nome anzichè l'indice; tuttavia il seguente metodo permette la rimozione senza conoscere l'indice:

    mylistview.Items.RemoveByKey("key")

    Non è stato facile torvare queste soluzioni poichè chi si è ritrovato ad usare i suddetti metodi si è visto ritornare un -1 (non trovato).

    Ho scoperto che ciò avviene per una carenza di informazioni nel momento in cui si aggiunge un Item nella lista.

    E' consuetudine fare:

    mylistview.Items.Add("text")

    Purtroppo mi è costato un ammontare di tempo enorme scoprire che quel "text" non è la "key" necessaria ai metodi IndexOfKey e RemoveByKey.

    E' in tal caso necessario usare questa forma:

    mylistview.Items.Add("Key","text")

    Ho ritenuto opportuno annotare in questo forum quanto detto poichè da nessuna parte ho trovato una esauriente descrizione degli argomenti richiesti dal metodo Add.

    Approfitto anche per mostrare come si crea ed associa un elemento con immagine ad un gruppo specificato:

    mylistview.Items.Add("key","text",idx-immagine).Group=mylistview.Groups("nome gruppo")

    Ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.