Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di fedrock
    Registrato dal
    Jun 2009
    residenza
    Milan
    Messaggi
    342

    [VB.NET]Funzione "cerca"

    Sto realizzando una funzione "cerca" simile a quella del blocco note (modifica=>trova).
    In pratica ho un ComboBox che carica tutti gli Items di un ListBox, contenuto su un'altra form.
    Ho una TextBox dove scrivere la "parola chiave" da cercare e un Button con il seguente codice:

    codice:
    Dim PO As Integer = 0
            For i = 0 To ComboBox1.ItemHeight - 1
                Try
                    ComboBox1.SelectedIndex = i
                Catch
                End Try
                Dim str As String = ComboBox1.Text
                If str.Contains(TextBox1.Text) Then
                    MsgBox("è contenuto nell'index: " & i)
                    ComboBox2.Items.Add(ComboBox1.Items(i))
                    ComboBox1.Items.Remove(i)
                    PO += 1
                Else
                End If
            Next
            If PO = 0 Then
                MessageBox.Show("Not found")
            End If
    Il Button come risultato in caso di parola chiave trovata in qualche Item: aggiunge l'Item trovato al ComboBox2...

    Errori riscontrati
    -In pratica non mi considera nella ricerca alcuni Item (dal 14° in poi, sono 44 gli Items...)

    I SHOULD TELL YOU SOMETHING NEW:
    don't want you here.


  2. #2
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Occhi, il For deve andare da 0 (zero) a ComboBox1.Items.Count - 1.

    Inoltre, se vuoi un consiglio, sostituisci questo
    codice:
    Try
       ComboBox1.SelectedIndex = i
    Catch
    End Try
    Dim str As String = ComboBox1.Text
    If str.Contains(TextBox1.Text) Then
    Con

    codice:
    If ComboBox1.Items(i).ToString().Contains(TextBox1.Text) Then
    Fa la stessa identica cosa, ma è più pulito e (se non sbaglio) anche più veloce...



    P.S.: Non mi ricordo se è ComboBox1.Items o .Item e ora non ho la possibilità di controllare. Usa quello che non dà errori di compilazione...
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  3. #3
    Utente di HTML.it L'avatar di fedrock
    Registrato dal
    Jun 2009
    residenza
    Milan
    Messaggi
    342
    Originariamente inviato da ShaleN
    Occhi, il For deve andare da 0 (zero) a ComboBox1.Items.Count - 1.
    mannaggia a me
    Inoltre, se vuoi un consiglio, sostituisci questo
    codice:
    Try
       ComboBox1.SelectedIndex = i
    Catch
    End Try
    Dim str As String = ComboBox1.Text
    If str.Contains(TextBox1.Text) Then
    Con

    codice:
    If ComboBox1.Items(i).ToString().Contains(TextBox1.Text) Then
    Fa la stessa identica cosa, ma è più pulito e (se non sbaglio) anche più veloce...


    Hai ragione: decisamento meglio

    P.S.: Non mi ricordo se è ComboBox1.Items o .Item e ora non ho la possibilità di controllare. Usa quello che non dà errori di compilazione...
    Giusto Items
    Mille grazie per tutto, ora funziona alla perfezione!

    I SHOULD TELL YOU SOMETHING NEW:
    don't want you here.


  4. #4

  5. #5
    Utente di HTML.it L'avatar di fedrock
    Registrato dal
    Jun 2009
    residenza
    Milan
    Messaggi
    342
    Originariamente inviato da gibra
    Perchè non usare il metodo apposito?

    Metodo ComboBox.FindString
    Premettendo la mia totale sconoscenza del metodo:

    Se ho ben capito quel metodo permette di trovare l'item ma bisogna scriverlo tutto; io invece ho la necessita di trovare l'item che contiene per esempio la parola rosso ma che ne contiene altre tipo:
    codice:
    giallo verde blu rosso magenta
    Magari ho capito male la funzione del metodo

    I SHOULD TELL YOU SOMETHING NEW:
    don't want you here.


  6. #6
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Originariamente inviato da gibra
    Perchè non usare il metodo apposito?

    Metodo ComboBox.FindString
    I°: Non sapevo che esisteva
    II°: Se ho interpretato correttamente la documentazione, cerca la sottostringa passata per parametro a partire dall'inizio della stringa dell'Item. E questo non equivale a String.Contains, se non sbaglio

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da fedrock
    Premettendo la mia totale sconoscenza del metodo:

    Se ho ben capito quel metodo permette di trovare l'item ma bisogna scriverlo tutto; io invece ho la necessita di trovare l'item che contiene per esempio la parola rosso ma che ne contiene altre tipo:
    codice:
    giallo verde blu rosso magenta
    Magari ho capito male la funzione del metodo
    Cerca dall'inizio della stringa
    se scrivi

    gia

    trova la tua stringa

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da ShaleN
    I°: Non sapevo che esisteva
    II°: Se ho interpretato correttamente la documentazione, cerca la sottostringa passata per parametro a partire dall'inizio della stringa dell'Item. E questo non equivale a String.Contains, se non sbaglio

    Ops! Mi era sfuggito il dettaglio della ricerca parziale all'interno dell'item.

    Beh, poco male, almeno così avete scoperto un metodo nuovo.
    N.B. Vale anche per il ListBox.


  9. #9
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Originariamente inviato da gibra
    Beh, poco male, almeno così avete scoperto un metodo nuovo.
    N.B. Vale anche per il ListBox.

    Grazie Gibra

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

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.