Ik heb dus het volgende form tot nu toe:

Let niet op de labeltjes linksonder, die gebruik ik puur voor controle van mijn gegevens.
De bedoeling van het programma is vrij voor de hand liggend, een orderlijst creëren. Je selecteert een regel, geeft een aantal en het programma rekent de prijs uit enzo. Het lastige echter is dat de listbox gedeeltelijk aangepast moet worden na een bestelling, en wel het getal in de laatste 'kolom'. Bestel ik 5x het eerste artikel dan moet na klikken op de orderbutton die 0 een 5 worden.
Mijn denkwijze:
-lees de tekst uit van het geselecteerde item
-split deze string naar een array zodat je de verschillende items in die array kunt gebruiken voor bv. de totaalprijs
-vervang bij het order bevestigen het 4e item van de array door het nieuwe aantal
-maak van deze array weer een string
Tot zover lijkt dat te lukken, als ik die string ergens in een label oproep, geeft ie precies wat ik moet hebben (zie het label rechtsonder).
Daarna loop ik vast. Op 1 of andere manier moet je dan de tekst van het geselecteerde item vervangen door die laatste string maar hoe??
Heb hier een stuk code van het form:
Regel 27 heb ik dus geprobeerd, maar daarna loopt het programma vast met een verwijzing Index was outside the bounds of the array naar regel 3. Daar kan ik helemaal niks mee... Geen idee wat ik fout doe.
Heb al uitgebreid gegoogled naar allerlei varianten 'replace item in listbox', ik kom echter niet verder. Ook in mijn studieboek is niks hierover te vinden, wat wel vreemd is, de opdrachten zijn altijd gebaseerd op (een variant op) de tot dan toe behandelde stof. Is mijn aanpak überhaupt wel goed, zit ik in de goede richting of ms wel helemaal niet, kan het makkelijker, korter etc etc...
-edit
wat wellicht voor het totaalplaatje nog handig is te weten, de gewijzigde orderregel moet meteen ook naar een apart .txt-bestand worden weggeschreven. Op bovenstaand form komt nog een 'wijzig orderlijst' knop, waarmee je een nieuwe form oproept met een textbox met dat txt-bestand, waarin je het aantal handmatig kan wijzigen wat dan weer doorgevoerd moet worden in bovenstaand form.

Let niet op de labeltjes linksonder, die gebruik ik puur voor controle van mijn gegevens.
De bedoeling van het programma is vrij voor de hand liggend, een orderlijst creëren. Je selecteert een regel, geeft een aantal en het programma rekent de prijs uit enzo. Het lastige echter is dat de listbox gedeeltelijk aangepast moet worden na een bestelling, en wel het getal in de laatste 'kolom'. Bestel ik 5x het eerste artikel dan moet na klikken op de orderbutton die 0 een 5 worden.
Mijn denkwijze:
-lees de tekst uit van het geselecteerde item
-split deze string naar een array zodat je de verschillende items in die array kunt gebruiken voor bv. de totaalprijs
-vervang bij het order bevestigen het 4e item van de array door het nieuwe aantal
-maak van deze array weer een string
Tot zover lijkt dat te lukken, als ik die string ergens in een label oproep, geeft ie precies wat ik moet hebben (zie het label rechtsonder).
Daarna loop ik vast. Op 1 of andere manier moet je dan de tekst van het geselecteerde item vervangen door die laatste string maar hoe??
Heb hier een stuk code van het form:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| Private Sub OrderListBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OrderListBox.SelectedIndexChanged TextLineArray = Split(OrderListBox.Text, ";") ArticlePrice = Convert.ToDecimal(Trim(TextLineArray(2)), New System.Globalization.CultureInfo("en-US")) Label8.Text = ArticlePrice If Number = 0 Then NumericUpDown1.Enabled = True End If End Sub Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged If NumericUpDown1.Value > 0 Then OrderButton.Enabled = True End If End Sub Private Sub OrderButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OrderButton.Click NewNumber = NumericUpDown1.Value If NewNumber = 0 Then MsgBox("Select a number > 0") Else TotalPrice = TotalPrice + (NewNumber * ArticlePrice) TotalPriceLabel.Text = "Total of orderlist € " & Format(TotalPrice, "0.00") NumericUpDown1.Value = 0 TextLineArray = Split(OrderListBox.Text, ";") TextLineArray(3) = NewNumber TextLine = Join(TextLineArray, ";") ' OrderListBox.Items(OrderListBox.SelectedIndex) = TextLine Label8.Text = TextLine End If End Sub |
Regel 27 heb ik dus geprobeerd, maar daarna loopt het programma vast met een verwijzing Index was outside the bounds of the array naar regel 3. Daar kan ik helemaal niks mee... Geen idee wat ik fout doe.
Heb al uitgebreid gegoogled naar allerlei varianten 'replace item in listbox', ik kom echter niet verder. Ook in mijn studieboek is niks hierover te vinden, wat wel vreemd is, de opdrachten zijn altijd gebaseerd op (een variant op) de tot dan toe behandelde stof. Is mijn aanpak überhaupt wel goed, zit ik in de goede richting of ms wel helemaal niet, kan het makkelijker, korter etc etc...
-edit
wat wellicht voor het totaalplaatje nog handig is te weten, de gewijzigde orderregel moet meteen ook naar een apart .txt-bestand worden weggeschreven. Op bovenstaand form komt nog een 'wijzig orderlijst' knop, waarmee je een nieuwe form oproept met een textbox met dat txt-bestand, waarin je het aantal handmatig kan wijzigen wat dan weer doorgevoerd moet worden in bovenstaand form.
[ Voor 5% gewijzigd door Modus47 op 26-12-2010 23:14 ]