Checken welke items selected zijn en welke niet

Status
Niet open voor verdere reacties.

The Mighty Atom

Terugkerende gebruiker
Lid geworden
22 mei 2008
Berichten
1.380
Ik heb een listbox met daarin items. In deze listbox kunnen meerdere items geselecteerd worden. Vervolgens wil ik deze items laten wegschrijven naar een tekst bestand, om ze later als het programma opnieuw opstart, weer in te lezen en terug in de listbox plaatsen.

Dit werkt prima, maar daarnaast wil ook controleren welke items geselecteerd zijn en welke niet. Zodat de items die tijdens het opslaan geselecteerd waren ook weer geselecteerd worden tijdens het inlezen.
Met een listview is dit makkelijk:

Code:
For Each Item As ListViewItem in ListView1.Items
If Item.Selected Then
 ...Item.Text & " " & True
Else
...Item.Text & " " & False
End If
Next

Simpel, maar dit werkt niet met een ListBox, aangezien item in een listbox van het type string zijn en er bestaat ook niet zoiets als:
Code:
For Each Item As ListBoxItem in ListBox1.Items

Dus ik kan hier de Selected property niet op proberen.
Ik heb ook Item As Object geprobeert maar die accepteert ook Selected = True/False niet.

In ListBox1.SelectedItems kan ik niet gebruiken want deze pakt alleen de geselecteerde items en niet de niet geselecteerde items. Ik moet alles items hebben en per item checken welke geselecteerd zijn en welke niet en dit door middel van een simpele True of False laten wegschrijven.
Nogmaals, dat wegschrijven is geen probleem, het is dat ik moet controleren welke items geselecteerd zijn en welke niet.

Iemand een idee?
 
@The Mighty Atom

Hey :D

is dit wat je zoekt?

Code:
Dim ListBox1 As ListBox


    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim Item As String
        Dim Index As Integer

        TextBox1.Text = "Here are the selected items: "
        For Each Item In ListBox1.SelectedItems
            TextBox1.Text &= Item.ToString() & " "
        Next

    End Sub
hoop dat het dit is wat je zocht

Dummy1912
 
Dat is niet echt wat ik zoek. Jouw code neemt alleen de geselecteerde items en de niet geselecteerde items slaat tie over.

Ik moet ALLE items hebben. Ik zal effe een screenshotje maken...

listboxitems.jpg


Zie daar. Zoals je ziet zijn items 2, 4, 5 en 8 geselecteerd. Deze krijgen bij het wegschijven True. De niet geselecteerde items krijgen False. Dat schrijf ik naar een tekst bestand op deze manier:

1|False
2|True
3|False
4|True
5|True
6|False
7|False
8|True

De | is de delimiter die ik gebruik om te splitten.
Waar het omgaat is dat ik moet checken of een item geselecteerd is of niet. Als een item geselecteerd is, krijgt deze True mee, en False voor de niet geselecteerde items.

Hopelijk heb je em nu door. :)
 
volgens mijn afb

is dit toch ook zo?

alles wat er geselecteerd is.

Dummy1912
 

Bijlagen

  • ListBoxMultiSelection.PNG
    ListBoxMultiSelection.PNG
    5,2 KB · Weergaven: 32
volgens mijn afb

is dit toch ook zo?

alles wat er geselecteerd is.

Dummy1912

Net wat je zegt, alles wat er geselecteerd is, maar ik zei al meerdere malen dat ik alle items moet hebben, dus zowel de geselecteerde als de niet geselecteerde items. Je leest mijn posts toch wel? :P:cool:

Ik zal het nog eens stap voor stap uitleggen:

Het is de bedoeling dat alle items in de listbox nagelopen worden. Komt VB een item tegen die niet geselecteerd is, sla deze op deze manier op:

Code:
Text_van_item|False

Komt VB een item tegen die wel geselecteerd is, sla het dan zo op:

Code:
Text_van_item|True

Ga zo door totdat de lijst afgewerkt is.
Het gaat er dus puur om om een manier te vinden dat nagaat welk item geselecteerd is en welke niet.
Met een listview gaat dat heel simpel, je maakt een listviewitem object en je gebruikt de Selected propery om na te gaan of een listviewitem geselecteerd is of niet.
Maar een listbox is geen listview, en een listviewitem werkt niet op een listbox. Ik dacht eerst misschien is er wel een listboxitem, maar die bestaat niet. Op internet kwam ik al wel een listitem object tegen maar die kan ik niet maken (not defined). String en Object datatype kan ik ook niet gebruiken omdat die ook geen Selected propery hebben.
En de listbox vervangen met een listview is helaas geen optie voor mij.

Dit moet toch te doen zijn lijkt me.

Edit: Heb het voor elkaar. Ik heb dezelfde vraag ook effe gepost op Code Project. De oplossing:

Code:
                            For int As Integer = 0 To frmMain.lbHLFixWadFiles.Items.Count - 1
                                Dim Item As String = frmMain.lbHLFixWadFiles.Items(int)
                                If frmMain.lbHLFixWadFiles.SelectedItems.Contains(Item) Then
                                    RSet(c.name, Item & "|" & True)
                                Else
                                    RSet(c.name, Item & "|" & False)
                                End If
                            Next
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan