Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Da Listbox a CheckListBox
Forum - C# / VB.NET - Da Listbox a CheckListBox

Avatar
AleBiT (Normal User)
Newbie


Messaggi: 18
Iscritto: 28/12/2008

Segnala al moderatore
Postato alle 23:34
Venerdì, 18/09/2009
Ciao a tutti.

In pratica ho una checklistbox e una listbox.

la checklistbox ha molti item diciamo.

la listbox ne ha una decina.

Come posso fare per "checkare" gli item della checklistbox (contenuti nella listbox ) ?

Ad es :

Nella listbox c'è :

----------
Mario
Piero
Alfredo
-----------


Vorrei che nella checklistbox venisse :

-------------
[ ] Giuseppe
[ ] Pino
[X] Mario
[ ] Giacomo
[X] Piero
[X] alfredo
-------------


il mio codice non funziona , ma lo posto lo stesso. ("dove" è sempre "-1")

Codice sorgente - presumibilmente VB.NET

  1. For Each item As String In ListBox.Items
  2.  
  3.             Dim dove As Integer = checklistbox.Items.IndexOf(item)
  4.  
  5.             checklistbox.SetItemChecked(dove, True)
  6.                  
  7.         Next




Per favore aiutatemi non riesco a capire dove sbaglio...
eppure per trovare l'index si usa "IndexOf" ! :-|


PM Quote
Avatar
BigMitch (Member)
Rookie


Messaggi: 43
Iscritto: 15/02/2009

Segnala al moderatore
Postato alle 12:52
Sabato, 19/09/2009
Ciao ho visto il tuo esempio e puoi fare così...ti prendi il primo elemento della listbox e ti scorri tutti gli elementi della checklist e se lo trova lo spunta.

Ti posto il codice:

Codice sorgente - presumibilmente VB.NET

  1. Dim i As Integer, k As Integer
  2.  
  3.         For i = 0 To ListBox1.Items.Count - 1
  4.  
  5.             For k = 0 To CheckedListBox1.Items.Count - 1
  6.  
  7. 'Controllo se l'elemento della listbox è uguale all'elemento della checklist e li
  8. 'confronto tutti maiuscoli per evitare errori di confronto.
  9.  
  10.                 If UCase(ListBox1.Items.Item(i).ToString) = UCase(CheckedListBox1.Items.Item(k).ToString) Then  
  11.  
  12.  
  13.                     CheckedListBox1.SetItemChecked(k, True)  'Spunto l'elemento
  14.                 End If
  15.             Next
  16.         Next



Ciao e fammi sapere :k:

Ultima modifica effettuata da BigMitch il 19/09/2009 alle 12:56
PM Quote
Avatar
AleBiT (Normal User)
Newbie


Messaggi: 18
Iscritto: 28/12/2008

Segnala al moderatore
Postato alle 14:10
Sabato, 19/09/2009
Mi checka solo la prima :-|

Ho provato ad inserire il tuo codice in una routine x ogni elemento ma non cambia niente..


Ultima modifica effettuata da AleBiT il 19/09/2009 alle 14:17
PM Quote
Avatar
BigMitch (Member)
Rookie


Messaggi: 43
Iscritto: 15/02/2009

Segnala al moderatore
Postato alle 14:19
Sabato, 19/09/2009
Testo quotato

Postato originariamente da AleBiT:

Mi checka solo la prima :-|




Sono scritti in modo uguale gli elementi della listbox e della check? Perchè il blocco IF controlla se gli elementi sono uguali....

Testo quotato


Comunque non ho capito il giochino del count -1 ....



Il count -1 è per indicare il numero massimo degli elementi -1 perchè il primo elemento ha indice zero quindi per fare il ciclo di tutti devi escludere -1 se no vai fuori lista....

L'ho provato e a me funziona....ti allego il mio esempio in VB 2005 ... :k:


BigMitch ha allegato un file: Esempio.zip (53141 bytes)
Clicca qui per scaricare il file
PM Quote
Avatar
AleBiT (Normal User)
Newbie


Messaggi: 18
Iscritto: 28/12/2008

Segnala al moderatore
Postato alle 14:35
Sabato, 19/09/2009
sisi sono ugali ! ma quello che non capisco è perchè proprio la prima funge !:_doubt:


PS : grazie per l'esempio ,e quello funziona...


Cioè la checklistbox è su un altro form ma questo non penso c'entri molto..:rotfl:


Non so cosa pensare...sto provando di tutto. :om:


Ragazzi a questo punto , forse sbaglio io , visto posto tutto il codice della sub.

Codice sorgente - presumibilmente VB.NET

  1. Dim cart As String = My.Computer.FileSystem.ReadAllText("C:\Wr2Dir")
  2.         Dim lista As String = My.Computer.FileSystem.ReadAllText(cart & "\" & ComboBox1.Text & ".dcl")
  3.         ListBox2.Items.Clear()
  4.         ListBox1.Items.Clear()
  5.         Form1.button6_click(sender, e)
  6.         For Each line As String In lista.Split(vbCrLf)
  7.             ListBox1.Items.Add(line)
  8.         Next
  9.  
  10.         For Each item1 As String In ListBox1.Items
  11.             Dim splittato() As String = item1.Split(",")
  12.             If item1.Length > 1 Then
  13.                 ListBox2.Items.Add((splittato(0)))
  14.  
  15.             End If
  16.         Next
  17.  
  18.  
  19.  
  20.         Dim i As Integer, k As Integer
  21.  
  22.         For i = 0 To ListBox2.Items.Count - 1
  23.  
  24.             For k = 0 To Form1.lista_addon.Items.Count - 1
  25.  
  26.                 'Controllo se l'elemento della listbox è uguale all'elemento della checklist e li
  27.                 'confronto tutti maiuscoli per evitare errori di confronto.
  28.  
  29.                 If UCase(ListBox2.Items.Item(i).ToString) = UCase(Form1.lista_addon.Items.Item(k).ToString) Then
  30.  
  31.  
  32.                     Form1.lista_addon.SetItemChecked(k, True)  'Spunto l'elemento
  33.                 End If
  34.             Next
  35.         Next
  36.  
  37.  
  38.         MsgBox("Addon Cars Enabled : " & Form1.lista_addon.CheckedItems.Count & vbCrLf & vbCrLf & "Do you want Save Settings ?", MsgBoxStyle.Information + MsgBoxStyle.YesNo)




Forse c'è qualcosa di sbagliato prima...

Ultima modifica effettuata da AleBiT il 19/09/2009 alle 16:14
PM Quote
Avatar
BigMitch (Member)
Rookie


Messaggi: 43
Iscritto: 15/02/2009

Segnala al moderatore
Postato alle 19:40
Sabato, 19/09/2009
Il form1 viene caricato con l'evento SHOW prima di eseguire la sub? Perchè il tuo codice da come hai postato sembra giusto senza errori...

PM Quote
Avatar
AleBiT (Normal User)
Newbie


Messaggi: 18
Iscritto: 28/12/2008

Segnala al moderatore
Postato alle 17:52
Domenica, 20/09/2009
Testo quotato

Postato originariamente da BigMitch:

Il form1 viene caricato con l'evento SHOW prima di eseguire la sub? Perchè il tuo codice da come hai postato sembra giusto senza errori...





Allora il form1 è quello principale e il form "manager" è quello dove c'è questo codice.

Il form "manager" viene aperto tramite un pulsante , Manager.ShowDialog() .:yup:


Allora ecco uno Screenshot , per capirci meglio :
http://img36.imageshack.us/img36/7828/immaginekn.png


Il form 1 è quello grande ,
e il form "manager" viene aperto tramite il pulsante "list manager".

Il codice su cui stiamo ragionando , è per il pulsante "load". (su manager):yup:

Ultima modifica effettuata da AleBiT il 20/09/2009 alle 18:12
PM Quote
Avatar
AleBiT (Normal User)
Newbie


Messaggi: 18
Iscritto: 28/12/2008

Segnala al moderatore
Postato alle 14:34
Lunedì, 21/09/2009
Scusate...Up.......:-|

PM Quote