Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [vb 2008] DESELEZIONE ITEM IN CHECKEDLISTBOX

    Buongiorno a tutti,
    ho creato un form in cui sono presenti una checkedlistbox con un certo numero di item ed una datagridview che è composta da 4 colonne in cui la prima colonna corrisponde ai checked items della checkedlistbox e le altre 3 colonne sono delle DatagridViewButtonColumns.
    L'inserimento dei checked items nella datagridview funziona correttamente e viene effettuato tramite il seguente codice in una private sub che ha come handles il CheckedListBox.SelectedIndexChanged:

    codice:
     DataGridView1.Rows.Add()         
    Dim l As Integer
    For Each Item In CheckedListBox1.CheckedItems                        
    DataGridView1.Rows(l).Cells(0).Value = CheckedListBox1.GetItemText(Item)             
    l = l + 1         Next
    Ora vorrei che i checked items che vengono deselezionati scompaiano anche dalla datagridview.

    Potete darmi un suggerimento?

    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Dato che l'unico 'legame' tra DataGridView e CheckedListbox è il testo dell'item,
    credo che l'unico modo è quello di iterare tra le Row del DatagridView per cercare il testo dell'item che viene deselezionato nel CheckedListbox:

    se trova la corrispondenza, agisci in conseguenza.


  3. #3
    Buongiorno gibra,
    grazie mille per aver risposto. Forse non ho capito bene il tuo suggerimento.
    Il mio problema è che non so che evento corrisponde alla deselezione dell'item che era stato precedentemente selezionato. Esiste in vb.net?
    Ho provato in vari modi ma non riesco a venirne a capo. Mi servirebbe accorgermi quando lo stato dei checked items passa ad unchecked ma non so come formalizzarlo!
    Grazie

  4. #4

  5. #5
    Si ho guardato ma non funziona come desidero. Ho provato con questa sub, giusto per capire se era l'evento che mi serviva:
    codice:
     Private Sub CheckedListBox1_StateChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckedListBox1.ItemCheck
    MessageBox.Show("deselezione")
    Ciò che succede è che come seleziono un item mi appare il messaggio mentre io vorrei che apparisse quando un item selezionato viene successivamente deselezionato. Anche io dalla descrizione pensavo che fosse l'evento giusto ma non mi sembra

  6. #6
    Utente di HTML.it L'avatar di alpynet
    Registrato dal
    Mar 2010
    Messaggi
    123
    Ciao, se leggi bene il link che ti ha passato gibra, hai tutto il necessario per risolvere la tua problematica...
    In pratica devi usare l'evento ItemCheck e controllare che e.NewValue sia uguale a Unchecked

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da saretta12
    Si ho guardato ma non funziona come desidero. Ho provato con questa sub, giusto per capire se era l'evento che mi serviva:
    codice:
     Private Sub CheckedListBox1_StateChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckedListBox1.ItemCheck
    MessageBox.Show("deselezione")
    Ciò che succede è che come seleziono un item mi appare il messaggio mentre io vorrei che apparisse quando un item selezionato viene successivamente deselezionato. Anche io dalla descrizione pensavo che fosse l'evento giusto ma non mi sembra
    Non hai letto con attenzione la documentazione dell'evento.

    E' un evento che occorre quando lo "stato cambia". Ma se ti serve, devi controllare il nuovo stato per capire se è il caso di far visualizzare il messaggio o no ... e hai a disposizione il valore

    e.NewValue

    per usarlo con una if opportuna ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Si hai ragione ho risolto nel seguente modo:

    codice:
     Private Sub CheckedListBox1_ItemCheck(ByVal sender As Object, ByVal e As ItemCheckEventArgs) _      Handles CheckedListBox1.ItemCheck        
    Dim Deselezionato As String         
    Dim Indice As String         
    Indice = e.Index        
     Indice = Me.CheckedListBox1.Items(Indice)        
     Deselezionato = Me.CheckedListBox1.GetItemText(Indice)
     Dim NuovoStato As String         
    NuovoStato = e.NewValue        
     If NuovoStato = "0" Then            
     Dim righe As Integer = 0             
    Dim colonne As Integer = 0            
     righe = Me.DataGridView1.RowCount            
     colonne = Me.DataGridView1.ColumnCount            
     Dim IndiceRighe As Integer = 0             
     For IndiceRighe = 0 To righe - 1  
    Dim ITEM As String
    ITEM = Me.DataGridView1.Item(0, IndiceRighe).Value
     If ITEM = Deselezionato Then 
       'rimuovi la riga 
     DataGridView1.Rows.RemoveAt(IndiceRighe) 
      End If   
     Next           
      End If 
     End Sub

    Grazie e buona giornata

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.