Zum Inhalt springen

von Klasse auf das Objekt einer anderen Klasse zugreifen


Empfohlene Beiträge

Geschrieben

Main erzeugt irgendwo den "Schrank" und merkt sich welcher Schrank das war.

Main malt den Schrank an (bzw. Schrank lässt sich anmalen).

Main schaut nach, welche Farbe der Schrank hat (genau der, den sie oben erzeugt hat).

Ich versteh bloß nicht, warum du in main die Ausgabe haben willst.

Läuft nicht alles in der Fensterklasse?

Geschrieben

Ich habe mehrere Forms und Klassen. So auch die Form Main & Grundrechenarten und die dazugehörigen Klassen. In der Form Grundrechenarten werden Berechnung durchgeführt und schließlich in den fertigen String "ausgabe" abgelegt. Nun soll dieser String in der richTextBox von Form Main angezeigt werden.

Geschrieben

na dann ist das doch klar...

Nachdem du das Fenster in der Main erzeugt und angezeigt hast, bzw. nachdem das Fenster die Berechnung durchgeführt hat, rufst du einfach von der Instanz (das Fenster) die Funktion Get_ausgabe() auf und kommst so auf den String.

Geschrieben
Nun soll dieser String in der richTextBox von Form Main angezeigt werden.

Ja, das wissen wir alles schon, und das hilft uns nicht weiter.

Ich bitte dich hiermit zum dritten Mal, zu zeigen, wo und wie du die Instanz der Klasse Grundrechenarten anlegst, und wo und wie du Aktion aufrufst.

Es kommt nicht darauf an, wie die Klasse aufgebaut ist, sondern was du damit machst. In Worten des Beispiels: Es kommt nicht darauf an, wie der Schrank aufgebaut ist, und welche chemischen Vorgänge beim Anmalen ablaufen. Es kommt darauf an, wie du dir merkst, wo du den Schrank hingestellt hast.

Geschrieben
Ich bitte dich hiermit zum dritten Mal, zu zeigen, wo und wie du die Instanz der Klasse Grundrechenarten anlegst, und wo und wie du Aktion aufrufst.

Ich denke doch, dass es ersichtlich ist, wo und wie die Methode "Aktion" im Beitrag #21 aufgerufen wird.

Die Instanz zur Klasse Grundrechenarten wird in der Klasse Main (Form) angelegt:


Grundrechenarten FormGrundrechenarten = new Grundrechenarten();

string test = FormGrundrechenarten.Get_ausgabe();

TextBox_Rechenverlauf.AppendText(test + "\r\n");

Geschrieben
Ich denke doch, dass es ersichtlich ist, wo und wie die Methode "Aktion" im Beitrag #21 aufgerufen wird.
Nein, das ist nicht ersichtlich. Wo erstellst du diese Instanz? Wo steht in deinem Code noch new Grundrechenarten()?

Die Instanz zur Klasse Grundrechenarten wird in der Klasse Main (Form) angelegt:
Das ist aber nicht dieselbe Instanz, über die Aktion aufgerufen wird, sondern eine, die du dort neu erstellst. Der Schrank ist neu, der wurde nie angemalt.
Geschrieben

Ich glaube langsam riech ich ein Designproblem...

Main wird nicht benachrichtigt, wenn eine Berechnung durchgeführt wurde?

Anmerkung: Wenn du mit dem Ergebnis später weiterarbeiten willst, dann braucht das auch noch ne Property...

Geschrieben

Nachtrag: Wenn das wirklich das einzige Objekt dieser Klasse ist, das angelegt wird, dann ist klar, warum das nicht klappt. Du rufst sofort nach dem Erstellen Get_ausgabe auf, die Berechnung wird aber erst ausgeführt, wenn der Button angeklickt wird.

Das muss schon in der richtigen Reihenfolge passieren. Du kannst nicht erst die Farbe des Schrankes rausfinden, und dann anmalen.

Geschrieben
Main wird nicht benachrichtigt, wenn eine Berechnung durchgeführt wurde?

Genau... das Form Grundrechenarten macht alles unabhängig von Main! Alles wird dort berechnet und in einem String "ausgabe" zusammengefasst.

Gut, Properties.... bspw. so in die Klasse Grundrechenarten eintragen?


public string TextToShow

{

    get { return this.ausgabe; }

    set { this.ausgabe = value; }

}

Und dann in der Main:

Grundrechenarten FormGrundrechenarten = new Grundrechenarten();

TextBox_Rechenverlauf.AppendText(FormGrundrechenarten.TextToShow + "\r\n");

Geht aber auch noch nicht :rolleyes:

Geschrieben
Genau... das Form Grundrechenarten macht alles unabhängig von Main! Alles wird dort berechnet und in einem String "ausgabe" zusammengefasst.

[...]

Und dann in der Main:


Grundrechenarten FormGrundrechenarten = new Grundrechenarten();

TextBox_Rechenverlauf.AppendText(FormGrundrechenarten.TextToShow + "\r\n");

Ok, dann doch Designproblem. Du rufst erst dein Fenster auf, das wird angezeigt und im gleichen Moment liest du die ausgabe aus (die zu dem Zeitpunkt noch leer ist). Gibt jetzt verschiedene Mittel und wege das zu lösen... entweder du wirfst immer ein ereignis, welches die Main-Klasse benachrichtigt, dass sich die Property geändert hat (was allerdings mit Ereignishandlern ein Nachteil wäre, wenn du immer neue Fenster erzeugst.) oder du machst einen modalen Dialog, der zu erst abgearbeitet werden muss und sobald dieser geschlossen wird, liest du die Ausgabe der Instanz des Fensters aus und trägst sie ein (du wartest sozusagen, bis die Berechnung durchgeführt wurde, dann ist aber nur eine Berechnung pro Fenster möglich).
Gut, Properties.... bspw. so in die Klasse Grundrechenarten eintragen?

public string TextToShow

{

    get { return this.ausgabe; }

    set { this.ausgabe = value; }

}

Meinte ich eigentlich nicht. Aber verschieben wir das Problem mal auf später.

Geschrieben

Ich verlange wahrscheinlich viel zu viel..... aber gibt es denn nicht eine einfache Möglichkeit eine Variable permanet zu speichern - "fest halten" - , dass sie ihren Wert nicht verlieren (nur bei Neubelegung), so dass sie überall verfügbar ist?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...