Datenaustausch zwischen Forms



  • Hallo zusammen,
    ich habe eine Frage an euch. Und zwar will ich von einer Form auf eine andere Form zugreifen (und umgekehrt). Also so: Form1 <-> Form2

    Nachdem ich es selbst nicht hinbekommen habe, habe ich mal in den FAQ's nachgesehen. Dort bin ich auf folgenden Beitrag gestossen:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-169328.html

    Hier ist das Beispiel das ich in meinen Code eingebunden habe (in beide Forms):

    ref class ZielForm1 : public Form
    { 
      // ... 
      public: property String ^MeinText 
      { 
        String^ get() { return this->textBox1->Text; } 
        void set(String^ value) { this->textBox1->Text = value; } 
      } 
    };
    

    Damit ich Zugriff auf die jeweils andere Form habe, habe ich in Form1 "Form2.h" includet und in Form2 "Form1.h" includet. Dabei bekomme ich aber immer dieses Fehlermeldung bei der Programmerstellung: "Zu viele Headerdateien: Tiefe = 1024".

    Wie kann ich dies verhindern ?

    Danke,
    mfg philipp_s





  • Hallo,
    "#pragma once" verwende ich bereits.

    In Form1 habe ich nun diesen Code geschrieben (in die ersten zwei Zeilen):

    #pragma once
    #include "Form2.h"
    

    Über einen Button kann ich so Form2 öffnen:

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
    {
        Form2 ^lf;
        lf = gcnew Form2();
        lf->Show();
    }
    

    Dies funktioniert auch. Nur wenn ich in Form2 die "Form1.h" include, dann bekomme ich eine Fehlermeldung. Dies ist der Code (zum includen):

    #pragma once
    #include "Form1.h"
    

    Dies ist die Fehlermeldung:
    ...Form1.h(133) : error C2065: 'Form2': nichtdeklarierter Bezeichner

    Könnt ihr mir sagen was ich da falsch mache ?

    Danke,
    mfg philipp_s



  • Wenn Du gegenseitig die Forms verwenden willst, dann darfst Du die *implementierung* der Methode *nicht* in der h-Datei machen, sondern dies *musst* Du in der cpp-Datei machen!
    Und in der cp-Datei musst Du das entsprechend andere "formx.h" einbinden. Dann geht es.


Anmelden zum Antworten