Entwickler-Ecke
WinForms - Eigenschaft ausgeben
Sweetiieh - Mi 24.10.12 17:05
Titel: Eigenschaft ausgeben
Hallo,
ich bin dabei OOP in der Schule zu lernen, nun komme ich aber nicht mehr weiter...
Man kann über eine ComboBox 3 Namen auswählen, die alle besitzen ein alter & eine Größe.
Nun möchte ich haben, das wenn man den namen ausgewählt hat, in label1 die Größe & und in label2 das alter ausgegeben wird.
Klappt aber nicht.
C#-Quelltext
1: 2: 3: 4: 5: 6:
| public Form1() { InitializeComponent(); label1.Text = Convert.ToString(größe); label2.Text = Convert.ToString(alter); } |
C#-Quelltext
1: 2: 3: 4: 5: 6:
| private void Emi() { Pferde Emi = new Pferde(); Emi.größe = Convert.ToString(140); Emi.alter = Convert.ToString(15); } |
C#-Quelltext
1: 2: 3: 4:
| private void button1_Click(object sender, EventArgs e) { if (comboBox1.Text == "Emi") { Emi(); } } |
Kla, ich könnte einfach in der Methode Emi schreiben: label1.Text = Convert.ToString(Emi.größe); aber ich möchte es nicht so gelöst haben.
Kann mir da einer helfen?!
Dankeschön, schonmal im vorraus :)
Th69 - Mi 24.10.12 17:21
Hallo Jenny,
du hast zwar geschrieben, was du nicht haben willst, aber nicht genau, was du machen möchtest.
Ich gebe dir mal einfach ein paar Tipps:
- deine Methode
Emi sollte das
Pferde-Objekt mittels
return ... zurückgeben (P.S: Die Einzahl
Pferd wäre für den Klassennamen wohl besser)
- nun kannst du innerhalb der GUI-Methode auf das zurückgegeben Objekt zugreifen und es ausgeben:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| if (comboBox1.Text == "Emi") { Pferde emi = Emi(); label1.Text = Convert.ToString(emi.größe); label2.Text = Convert.ToString(emi.alter); } |
Außerdem wäre es besser, dein
Pferd(e)-Klasse hätte nicht nur
string-Werte, sondern für Größe und Alter bietet sich ja
int (also eine Ganzzahl) an.
Und auch die
Label sollte du besser benennen (z.B.
labelGroesse, labelAlter).
Sweetiieh - Mi 24.10.12 17:34
Okay, gut danke für die Info :)
Hier: Ich möchte einfach die Eigenschaft in den Label ausgeben lassen, ohne das ich es immer aufschreiben muss. Also ich möchte in der Combobox ein Name auswählen & sofort soll in label1 das alter ausgegeben werden & wenn man den namen ändert soll sich das alter auch ändern im label.
Ich könnte zwar jedesmal schreiben:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private void Emi() { Pferde Emi = new Pferde(); Emi.größe = Convert.ToString(140); Emi.alter = Convert.ToString(15);
label1.Text = Convert.ToString(Emi.größe); label2.Text = Convert.ToString(Emi.alter); } |
aber ich möchte nicht in jede methode das aufschreiben label1.Text = Emi.größe. Sondern ich will schreiben Das in label1 immer die Größe erscheinen soll...
Ralf Jansen - Mi 24.10.12 17:39
So wäre auch die Pferde Klasse völlig überflüssig. Ist es Teil eurer Aufgabe die Pferde Klasse sinnvoll einzusetzen?
Sweetiieh - Mi 24.10.12 17:48
Wir haben keine Aufgabe, ich habe es mir selbst zur Aufgabe gemacht, mein Lehrer gibt sich schon mit der Lösung zufrieden, ich aber nicht!
Ich meine es müsste noch besser gehen .. nur wie ist die frage und keiner kann mir helfen :/
Ralf Jansen - Mi 24.10.12 18:04
| Zitat: |
| Ich meine es müsste noch besser gehen .. nur wie ist die frage und keiner kann mir helfen :/ |
Besser geht immer ;) Ich checke nur wieweit wir dir helfen können oder sollten ohne dir das Denken abzunehmen bzw. dich zu überfordern je nachdem wie weit du in deinem Lernprozess bist.
Ein Weg das schöner zu gestalten wäre
a.) Schreibe dir eine Pferd Klasse mit den 3 Eigenschaften Name, Größe, Alter mit den passenden Datentypen.
b.) Erstelle davon 3 Instanzen mit den entsprechenden Daten für deine 3 Beispielpferde.
c.) Packe diese 3 Instanzen in eine Liste. Ein Array oder besser noch eine List<Pferd>.
d.) Binde diese Liste an die Combobox (Siehe dir dazu die DataSource und die Displaymember Properties an)
e.) In deiner Button_Click Methode kannst du dann das aktuell ausgewählte Pferd abfragen (SelectedItem Property der ComboBox). Du erhälst dann nicht nur den Namen sondern eine Pferd Instanz mit allen Daten die du dann einfach dem Label zuweisen kannst. Die Zuweisung gäbe es also nur 1 mal und nicht drei mal je Pferd mit zwischenzeitlicher Erzeugung einer neuen Pferd Instanz.
Wenn du das gemacht und verstanden hast könnte man den nächsten Schritt wagen und zur weiteren Verschönerung auch die Zuweisung der Werte an die Labels per Databinding zu machen dann würde Schritt e.) wegfallen. Zum Verständnis was da passiert wäre es aber für dich vermutlich zu früh das direkt anzugehen.
Th69 - Mi 24.10.12 19:06
Und zu
| Sweetiieh hat folgendes geschrieben: |
| Also ich möchte in der Combobox ein Name auswählen & sofort soll in label1 das alter ausgegeben werden. |
Dazu kannst du das SelectedIndexChanged-Ereignis der ComboBox benutzen (anstatt des explizit zu betätigenden Button-Click Ereignisses).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!