Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di lobbo
    Registrato dal
    Nov 2001
    Messaggi
    53

    [VB 2010] Problema con ListBox

    ciao a tutti vado subito al dunque
    ho impostato che al click di un button succede questo:
    codice:
    TextBox3.Text = CLng(Me.TextBox3.Text) + CLng(Me.ListBox1.SelectedItem)
    ListBox1.Items.Remove(ListBox1.SelectedItem)
    non fa altro che una somma del valore della textbox con quello della listbox dopo averlo selezionato col mouse e successivamente lo rimuove dalla listbox stessa.
    vorrei che se il numero della textbox arriva a minore o uguale a -1 automaticamente deve essere effettuata l'operazione di somma con l'ultimo elemento presente nella listbox ed eliminarlo subito dopo.
    quindi sarà una cosa simile...
    codice:
    If TextBox3.Text <= -1 Then
    TextBox3.Text = CLng(Me.TextBox3.Text) + CLng(Me.ListBox1.ULTIMO_ELEMENTO)
    ListBox1.Items.Remove(ListBox1.ULTIMO_ELEMENTO)
    End If
    come faccio a fargli capire che deve prendere l'ultimo elemento della listbox ?

  2. #2
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Puoi ottenere l' ultimo elemento della listbox così:
    codice:
    ListBox1.Items.Count - 1

  3. #3
    Utente di HTML.it L'avatar di lobbo
    Registrato dal
    Nov 2001
    Messaggi
    53
    funziona ma non come dovrebbe
    codice:
    If TextBox3.Text <= -1 Then
                TextBox3.Text = CLng(Me.TextBox3.Text) + CLng(Me.ListBox1.Items.Count - 1)
                ListBox1.Items.Remove(ListBox1.Items.Count - 1)
            End If
    non fa andare più la textbox sotto lo 0 e fa una somma che non capisco perchè non prende l'ultimo della listbox e dopo non lo cancella nemmeno..

  4. #4
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Non funziona perché la riga di codice che ho postato ritorna l' indice dell' ultimo elemento, non so se hai presente...mentre tu la stai usando male. Adesso sono al lavoro e con il cellulare, non posso dilugarmi...

  5. #5
    Devi usare il metodo RemoveAt, non Remove...
    Chi non cerca trova.

  6. #6
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Con:
    codice:
    ListBox1.Items.Count
    conti il numero degli elementi della listbox, se quest' ultima ha 4 elementi ottieni 4. L' indice per identificare gli elementi parte da zero quindi devi fare -1:
    codice:
    ListBox1.Items.Count -1
    quindi se hai quattro elementi con il testo 1, 2, 3 e 4, i rispettivi indici diventano 0, 1, 2 e 3:
    esempio:
    elemento - indice
    Qui - 0
    Quo - 1
    Qua - 2

    Quando scrivi:
    codice:
    TextBox3.Text = CLng(Me.TextBox3.Text) + CLng(Me.ListBox1.Items.Count - 1)
    sommi il valore della textbox con l' indice dell' ultimo elemento e non il valore visualizzato sulla listbox, dall' esempio sopra: 2 invece di Qua.
    Quindi per ottenere il valore dell' ultimo elemento diventa:
    codice:
    ListBox1.Items(ListBox1.Items.Count - 1)
    Per cancellare l' ultimo elemento ho scoperto una cosa nuova che devo approfondire...:
    codice:
    ' codice mio
    ListBox1.Items.Remove(ListBox1.Items(ListBox1.Items.Count - 1)) 
    ' codice di tas
    ListBox1.Items.RemoveAt(ListBox1.Items.Count - 1)
    Adesso mi sono dilungato troppo...ed ho fatto pure il maestrino

  7. #7
    Utente di HTML.it L'avatar di lobbo
    Registrato dal
    Nov 2001
    Messaggi
    53
    quando la textbox arriva ad 1
    inserendo 2 arriva a -1 ma -1 non deve essere accettato
    e deve sommare il 2 per far ritornare la textbox a 1
    ma il 2 non riesce ad arrivare nella listbox per essere sommato


    ho caricato un video che fa capire meglio:
    http://youtu.be/RiJhg6rv1Qg

  8. #8
    Utente di HTML.it L'avatar di lobbo
    Registrato dal
    Nov 2001
    Messaggi
    53
    funziona! ci sono riuscito!
    praticamente ho inserito il codice nel button invece che nel textchanged della textbox.

    codice:
    If TextBox3.Text <= -1 Then
    TextBox3.Text = CLng(Me.TextBox3.Text) + CLng(Me.ListBox1.Items(ListBox1.Items.Count - 1))
    ListBox1.Items.RemoveAt(ListBox1.Items.Count - 1)
    End If

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.