AleBiT (Normal User)
Newbie
Messaggi: 18
Iscritto: 28/12/2008
|
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 |
For Each item As String In ListBox.Items Dim dove As Integer = checklistbox.Items.IndexOf(item) checklistbox.SetItemChecked(dove, True) Next
|
Per favore aiutatemi non riesco a capire dove sbaglio...
eppure per trovare l'index si usa "IndexOf" !
|
|
BigMitch (Member)
Rookie
Messaggi: 43
Iscritto: 15/02/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 |
Dim i As Integer, k As Integer For i = 0 To ListBox1.Items.Count - 1 For k = 0 To CheckedListBox1.Items.Count - 1 'Controllo se l'elemento della listbox è uguale all'elemento della checklist e li 'confronto tutti maiuscoli per evitare errori di confronto. If UCase(ListBox1.Items.Item(i).ToString) = UCase(CheckedListBox1.Items.Item(k).ToString) Then CheckedListBox1.SetItemChecked(k, True) 'Spunto l'elemento End If Next Next
|
Ciao e fammi sapere
Ultima modifica effettuata da BigMitch il 19/09/2009 alle 12:56 |
|
AleBiT (Normal User)
Newbie
Messaggi: 18
Iscritto: 28/12/2008
|
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 |
|
BigMitch (Member)
Rookie
Messaggi: 43
Iscritto: 15/02/2009
|
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....
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 ... |
|
AleBiT (Normal User)
Newbie
Messaggi: 18
Iscritto: 28/12/2008
|
sisi sono ugali ! ma quello che non capisco è perchè proprio la prima funge !
PS : grazie per l'esempio ,e quello funziona...
Cioè la checklistbox è su un altro form ma questo non penso c'entri molto..
Non so cosa pensare...sto provando di tutto.
Ragazzi a questo punto , forse sbaglio io , visto posto tutto il codice della sub.
Codice sorgente - presumibilmente VB.NET |
Dim cart As String = My.Computer.FileSystem.ReadAllText("C:\Wr2Dir") Dim lista As String = My.Computer.FileSystem.ReadAllText(cart & "\" & ComboBox1.Text & ".dcl") ListBox2.Items.Clear() ListBox1.Items.Clear() Form1.button6_click(sender, e) For Each line As String In lista.Split(vbCrLf) ListBox1.Items.Add(line) Next For Each item1 As String In ListBox1.Items Dim splittato() As String = item1.Split(",") If item1.Length > 1 Then ListBox2.Items.Add((splittato(0))) End If Next Dim i As Integer, k As Integer For i = 0 To ListBox2.Items.Count - 1 For k = 0 To Form1.lista_addon.Items.Count - 1 'Controllo se l'elemento della listbox è uguale all'elemento della checklist e li 'confronto tutti maiuscoli per evitare errori di confronto. If UCase(ListBox2.Items.Item(i).ToString) = UCase(Form1.lista_addon.Items.Item(k).ToString) Then Form1.lista_addon.SetItemChecked(k, True) 'Spunto l'elemento End If Next Next 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 |
|
BigMitch (Member)
Rookie
Messaggi: 43
Iscritto: 15/02/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...
|
|
AleBiT (Normal User)
Newbie
Messaggi: 18
Iscritto: 28/12/2008
|
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() .
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) Ultima modifica effettuata da AleBiT il 20/09/2009 alle 18:12 |
|
AleBiT (Normal User)
Newbie
Messaggi: 18
Iscritto: 28/12/2008
|
Scusate...Up.......
|
|