Zum Inhalt springen

von Klasse auf das Objekt einer anderen Klasse zugreifen


grey1987

Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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");

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...