Dzień dobry,
Piszę tu, bo mam pewien problem, a nie potrafię jeszcze znaleźć rozwiązania, ponieważ programuję od niedawna.
Robię program w aplikacji Windows Forms,
i chciałam stworzyć coś w rodzaju sklepu internetowego,
mam klasę z klientem i 3 klasy z różnymi kategoriami przedmiotów.
Żeby dodać obiekt do klasy otwieram odpowiednią formatkę przyciskiem, wpisuję dane i wciskam przycisk, który dodaje wszystko po kolei do listboxa.
Następnie wybieram z listboxa odpowiednie przedmioty, wciskam "dodaj do koszyka" i pojawiają się one w drugim listboxie.
I tu zaczyna się problem.
Wszystkie klasy mają zmienną "cena", ale nie wiem jak wydobyć ceny z zaznaczonych i dodanych do koszyka przedmiotów aby podliczyć cenę końcową.
Jakby ktoś z państwa mógłby mi podpowiedzieć byłabym wdzięczna! :)
Bo do listboxa można podawać nie stringi, a obiekty, wtedy wyświetlane jest ToString(), a po zrzutowaniu jest normalny dostęp do składowych
To tyle rad na podstawie domysłow, daj kod
hej
-
możesz dodać znak przed ceną.. po wybraniu produktu z cena zrobisz sobie split("ten znak") i zawsze pierwsza pozycja to produkt a druga cena. Spacje odradzam ponieważ produkty mogą się składać z dwóch słów
-
z tego co pamiętam listbox posiada możliwość stworzenia kolumn.. zatem do pierwszej lądujesz produkt a do drugiej cene.. a potem po wybraniu takiej pozycji nie ma problem z odczytem danych.. tylko musisz sie pobawić eventami aby po wybraniu produktu zaznaczyła sie też cena no i jak ktos kliknie na cene to musi sie zaznaczyć produkt
Jak @AnyKtokolwiek napisał. Dodawaj do listboxów obiekty.
Potem suma dla towarów w listBox2
decimal suma = 0;
foreach (var item in listBox2.Items)
{
var twr = item as Towar;
if(twr != null)
suma += twr.Cena;
}
Klasa Towar
public class Towar
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Cena { get; set; }
public override string ToString()
{
return this.Name;
}
}
@jacek.placek: Hej! Dzięki za odpowiedź, jest mały sukces, bo rzeczywiście zaczęło wyświetlać cenę, niestety w każdym przypadku jest 0.
Nie jestem pewna dlaczego, ale to pewnie ma właśnie związek z tym, że dodaję stringi do listboxa?
Akcesoria przedmiot = new Akcesoria();
przedmiot.Nazwa = textBoxNazwa.Text;
przedmiot.Gatunek = textBoxGatunek.Text;
przedmiot.Kategoria = "Akcesoria";
przedmiot.Cena = numericUpDownCena.Value;
Akcesoria.ListaAkcesoriów.Add(przedmiot);
listBox1.Items.Add(przedmiot.Nazwa + " " + przedmiot.Gatunek + " " +przedmiot.Kategoria +" "+ przedmiot.Cena );
listBox1.Items.Add(przedmiot);
@jacek.placek: Zmieniłam już i wszystko ładnie działa i liczy, dzięki wielkie!