listbox index linken aan array kolom

Status
Niet open voor verdere reacties.

Fatboy58

Gebruiker
Lid geworden
6 apr 2008
Berichten
21
Hallo,
vb 2005 vraag

Ik heb een listbox gevuld met de rij van een 2 dim array, nu wil ik de waarde uit de kolom gebruiken als ik een item selecteer in de listbox om deze in een andere array te zetten en zo de som van de waarden te maken.
ik weet niet hoe je de index van de listbox en die van de barray kunt koppelen .
dit heb ik tot nu toe

Public Class Form1
Dim aThings(3, 1) As String

Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
aThings(0, 0) = "Mascara 4$"
aThings(0, 1) = 4
aThings(1, 0) = "Lipstick 5 $"
aThings(1, 1) = 5
aThings(2, 0) = "Nivea 3 $"
aThings(2, 1) = 2
aThings(3, 0) = "Pincet 3 $"
aThings(3, 1) = 3
For i As Integer = 0 To aThings.GetLength(0) - 1

LstThings.Items.Add(aThings(i, 0))


Next
End Sub

Private Sub BtnAdd_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles BtnAdd.Click

LstSelecThings.Items.Add(LstThings.SelectedItem)

End Sub

Private Sub BtnRemove_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles BtnRemove.Click
LstSelecThings.Items.Remove(LstSelecThings.SelectedItem)

End Sub
End Class
 
Heb als attachent een vb.net (2005) project toegevoegd waar voorbeelden staan over werken met lisboxen en arrays. Wellicht heb je daar iets aan :)
 

Bijlagen

listbox

Bedankt voor het progje,

Ik wil eigenlijk dit project maken in vb 2005, deze code is VB6, maar vb 2005 heeft bepaalde functies zoals ItemData & NewIndex en Len niet meer.
Nu kan ik dit wel laten converteren via Visual Studio maar eigenlijk zoek ik een manier om dit progje in Vb 2005 te maken

Attribute VB_Name = "CaloCode"
>> Dim afoodlist(9, 1) As String 'de array
>> Dim currentlstItem As Integer 'het listitem dat momenteel
>> geselecteerd is
>> Dim currentgebrItem As Integer 'het listitem dat geselecteerd is in
>> de rechterlijst
>> Dim totaalCalo As Integer 'het totaal aantal gebruikte calorieën
>>
>> Public Sub fillAFoodlist()
>> 'hier wordt de array gevuld
>> afoodlist(0, 0) = "Wit brood"
>> afoodlist(0, 1) = "40"
>> afoodlist(1, 0) = "Volkoren brood"
>> afoodlist(1, 1) = "40"
>> afoodlist(2, 0) = "Pasta"
>> afoodlist(2, 1) = "30"
>> afoodlist(3, 0) = "Aardappel"
>> afoodlist(3, 1) = "20"
>> afoodlist(4, 0) = "Kalkoen"
>> afoodlist(4, 1) = "30"
>> afoodlist(5, 0) = "Biefstuk"
>> afoodlist(5, 1) = "40"
>> afoodlist(6, 0) = "Gehakt"
>> afoodlist(6, 1) = "50"
>> afoodlist(7, 0) = "Chips"
>> afoodlist(7, 1) = "7.0"
>> afoodlist(8, 0) = "Volle melk"
>> afoodlist(8, 1) = "80"
>> afoodlist(9, 0) = "Linzen"
>> afoodlist(9, 1) = "20"
>> End Sub
>>
>> Public Sub fillProdList(frm As Form, lst As ListBox)
>> 'hier wordt de linkse lijst gevuld, de index van elk item is gelijk
>> aan i
>>
>> Dim i As Integer
>> Dim prod As String
>>
>> 'de lijst vullen
>> For i = 0 To 9
>> prod = afoodlist(i, 0)
>> lst.AddItem (prod)
>> lst.ItemData(lst.NewIndex) = i
>> Next
>>
>> End Sub
>> Public Sub changeCurrentItem(item As Integer)
>>
>> currentlstItem = item
>>
>> End Sub
>>
>> Public Sub addProd(lstGebr As ListBox, lstOverz As ListBox, gram As
>> String)
>> 'hier wordt het drukken op de toevoeg-knop behandeld
>> Dim prod As String
>> Dim cal As Integer
>> Dim item As String
>>
>> If Len(gram) Then
>> 'checken of er wel degelijk iets is ingevuld in het gram-tekstveld then
>> prod = afoodlist(currentlstItem, 0)
>> cal = afoodlist(currentlstItem, 1) / 100 * CInt(gram) 'calorieën
>> berekenen
>> item = prod & " (" & gram & "gr.) = " & cal & " Kcal" 'en een string
>> maken om toe te voegen in de lijst
>> totaalCalo = totaalCalo + cal
>> lstGebr.AddItem (item)
>> lstGebr.ItemData(lstGebr.NewIndex) = cal 'dit houden we bij om te
>> weten hoeveel calorieën er bij
>> 'verwijderen moeten
>> afgetrokken worden van het totaal
>>
>> Call updateOverzicht(lstOverz, lstGebr)
>> Else
>> MsgBox "U moet het tekstveld 'gram' invullen", vbExclamation
>> End If
>>
>> End Sub
>> Public Sub delProd(lst As ListBox)
>>
>> totaalCalo = totaalCalo - lst.ItemData(lst.ListIndex)
>>
>> lst.RemoveItem (lst.ListIndex)
>>
>> Call updateOverzicht(frmCalo.lstOverzicht, lst)
>>
>>
>> End Sub
>> Private Sub updateOverzicht(lstOverz As ListBox, lstGebr As ListBox)
>> Dim totaal As String
>> Dim item As String
>> Dim aantal, i As Integer
>>
>> aantal = lstGebr.ListCount
>>
>> lstOverz.Clear
>> totaal = "Het totaal aantal kcal tot nu toe bedraagt : " &
>> totaalCalo & " kcal"
>> lstOverz.AddItem (totaal)
>>
>> For i = 0 To aantal - 1
>> item = i + 1 & ") " & lstGebr.List(i)
>> lstOverz.AddItem (item)
>> Next
>>
>> End Sub
 
Len() kan je nog steeds gebruiken in vb.net 2005 hoor. Maar denk dat het eerder de bedoeling is dat je de method .Lenght gebruikt. Waarschijnlijk zijn die andere ook wel in .net aanwezig, lijkt me dom dat het niet zo zou zijn :)

Doet je programma nu wat je wil?
 
AddItem

Klopt, Len mss wel maar NewIndex & AddItem niet, voor AddItem moet je nu een klasse schrijven.
 
Dus als ik je goed begrijp wil je dit doen?

Als iemand een waarde in je listbox selecteerd wil je die optellen met een overeenstemmende waarde in die 2d array en die dan opslaan in een nieuwe array?
 
Correct, selecteren van de ene listbox naar de andere en de waarden optellen en ev aftrekken in een andere array.
 
Wat wil je precis doen met de bekomen waarden dan?
Mss snap ik het als je ff je project post :)
 
Ik krijg hem niet open... is dat vb.net 2005?
 
Denk dat ik het snap :)
Zal hem tegen morge avond ff fixe en hem je doorsture als je wil ;)
 
Ok, das goed nieuws! Als je wilt kan je er dan een beetje commentaar bij zetten, het is wel de bedoeling dat ik begrijp wat er gebeurd ?

Misschien dat ik op deze manier meer inzicht in het werken met listboxen gekoppelt aan array's krijg.


Tnx !
 
Hmm... kon het niet late om het nu al te doen :D

Hoop dat het een beetje duidelijk is ;)
 

Bijlagen

Super, lijkt deOvertoom wel ! Ik denk wel dat ik hier ff verder mee kan .
 
Ik stond ondertussen al een beetje verder om de waarde uit de kolom(1) te krijgen als je een itemselecteerd.Maar jou oplossing is perfect hoor!

Dim price As Integer
price = (aThings(LstThings.SelectedIndex, 1))
sum = sum + price
 
Ok, blij dat ik kon helpen :)

Wat jij schrijft kan ook korter:
Dim price As Integer = aThings(LstThings.SelectedIndex, 1)
sum += price

Ik raad het ook af om het met een 2d array op te lossen. Het is immers niet de bedoeling om waarden van verschillende typen (hier string en integer) in 1 lijst te stoppen ;)

Als je vraag is opgelost, klik dan ff op die ene link rechtsonder de post van deze topic :)
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan