Generische Liste

sahi

Cadet 1st Year
Registriert
Nov. 2012
Beiträge
10
hallo zusammen,

zwar habe ich eine generische liste mit 2 verschiedenen Produkten. Die Produkte haben am Anfang den selben Preis und der user kann jederzeit die Preis aendern. Wenn man die preise aendert, aendern sich gleichzeitig auch die preise in der generische liste und die Gesamtsumme. Für die bestehenden Produkte konnte ich den Preis aktualisieren aber für die Produkte die später hinzugefügt werden, da hab ich einige Probleme...ich muss den alten preis für die neu hinzugefügten Produkte überschreiben. Hier mein c# Quellcode dann wisst ihr was ich meine...

private void addToCart_Click(object sender, RoutedEventArgs e)
{
string element = productsComboBox.SelectedValue.ToString(); //ausgewähltes Element ist String

Product notebook;
Product smartphone;

try
{
int count = Convert.ToInt32(CountInput.Text);
int i;

switch (element) // ausgewähltes Element
{
case "Notebook":

for (i = 0; i < count; i++) // Bis die gewünschte Anzahl erreicht ist
{
notebook = new Notebook(); //Instanzen
cartList.Add(notebook); //notebooks werden in generische Liste hinzugefügt
}

break;
case "SmartPhone":

for (i = 0; i < count; i++) // Bis die gewünschte Anzahl erreicht ist
{
smartphone = new SmartPhone();//Instanzen
cartList.Add(smartphone); //notebooks werden in generische Liste hinzugefügt
}
break;
}
}
catch (System.Exception )
{
errorTextBox.Text = "Input is in the wrong format"; //fehler ausgabe
}

cartListListBox.Items.Clear(); //Die Elemente in der ListBox werden gelöscht damit die nicht doppelt vorkommen

foreach (Product wares in cartList) //foreach schleife für die waren die in der cartlist stehen
{
cartListListBox.Items.Add(wares); //Die produkte in der cartlist werden jetzt in Listbox hinzugefügt
//die warez der generischen Liste werden in ListBox hinzugefügt
}

int sum = 0; //summe Initialisieren
int vat=0; //vat initialisieren

foreach (Product product in cartList)
{
sum += product.Price; //berechnnung der Preis für die Produkte die in cartlist stehen
}

vat = sum / 100 * 19; //mehrwertsteuer berechnung
vatOutput.Text = vat.ToString(); // mehrsteuer ausgabe
PriceOutput.Text = sum.ToString(); //gesamtpreis ausgabe
}
//_______________________________________________________________________
private void applyButton_Click(object sender, RoutedEventArgs e)
{
try
{
string ownerElement = ownerProductComboBox.SelectedValue.ToString(); //ausgewähltes element Combobox(owner)

int newPrice = Convert.ToInt32(ChangePriceTextBox.Text); //Preis wird festgelegt und umgewandelt

newPriceTextBox.Text = newPrice.ToString(); //Der neue Preis wird im textbox ausgegeben.


foreach (Product pro in cartList) //Vorhandenen Produkte in der Cartlist
{
if (pro is Notebook && ownerElement == "Notebook") //wenn das produkt in der cartlist Notebook ist und ausgewähltes produkt gleichNotebook ist
{
pro.Price = newPrice;
}
if (pro is SmartPhone && ownerElement == "SmartPhone") //wenn das produkt in der cartlist smartphone ist und ausgewähltes produk gleich SmartPhone ist
{
pro.Price = newPrice;
}
}
}
catch (System.Exception)
{
ownerErrorTextBox.Text = "Input is in the wrong format";
}
//preis aenderung für die bestehenden produkte
}
//___________________________________________________________________

class Product
{
public int Price { get; set; }
}
//-----------------------------------------------------------------------------------------------------

class SmartPhone : Product
{
protected string smartPhone { get; set; }

public SmartPhone()
{
Price = 400;
smartPhone = "SmartPhone";
}

public override string ToString()
{
return smartPhone + "(" + Price.ToString() + ")";
}
}


ich muss also den Preis, der in der Klasse Smartphone drin steht überschreiben.aber wie ?
 
jup, so weigere ich mich das zu lesen. das ist ne qual.
 
sahi, tue dir in zukunft einen gefallen und schieb eine klasse zwischen, die die verwaltung der daten übernimmt. so dass du über die GUI nur methoden dieser klasse aufrufst und sie den datenbestand aktualisiert. erst nach dem erfolg zeigst du dann den datenbestand über die GUI wieder an.

hier das entsprechende pattern: http://de.wikipedia.org/wiki/Model_View_Controller

momentan sitzt dein controller in der view, das macht deinen code zur einer nudel.
 
Zurück
Oben