Form + Variablen übergabe



  • Hey @all,

    und zwar habe ich eine "main" - Form und eine andere Form (Dialog)

    Nun möchte ich von der Dialog-Form aus auf eine Variable der main-Form zugreifen, jedoch funktioniert das nicht..

    Hier mal ein Beispielscode:

    // form1.h
    #include "cperson.h"
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		[b]CPersonData *person;[/b]
    
    		Form1(void)
    		{
    
    			InitializeComponent();
    			//
    			//TODO: Add the constructor code here
    			//
    			[b]person = new CPersonData();[/b]
    		}
    ......};
    
    // form2.h
    #include "cperson.h"
    #include "form1.h"
    [b]Form1->person->IRGENDEINE_METHODE();[/b]    // Zeile 526
    

    Hier scheitert der Code mit folgender Fehlermeldungen:

    form2.h(526) : error C2065: 'Form1' : undeclared identifier
    form2.h(526) : error C2227: left of '->person' must point to class/struct/union/generic type
    

    Kann mir diesbezüglich jemand helfen? Bin voon BCB auf VC umgestiegen, und bei BCB funktionierte es so...

    Vielen Dank im voraus

    Lg _freeze_



  • was hat das jetzt mit MFC zu tun?



  • Das hat nichts mit der MFC zutun, aber wie macht man es in VC? wie gesagt in BCB ging es echt einfach.

    Lg _freeze_



  • Anstelle von "Form1" (was ja der Klassenname ist!) musst Du eine Instanz dieser Form angeben!!!

    PS: Du machst C++/CLI !!! => Da gibt es ein passenden Forum...



  • Mein Problem ist, das meine Hauptform bereits beim AAufruf erzeugt wird...

    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
    	// Enabling Windows XP visual effects before any controls are created
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false); 
    
    	// Create the main window and run it
    	Application::Run(gcnew Form1());
    	return 0;
    }
    

    Hier bekomme ich unter anderem auch eine Fehlermeldung, ausserdem ist das nicht der Zweck den ich haben wollte:

    private: System::Void TestMethod(System::Object^  sender, System::EventArgs^  e) {
    				 Form1^ f = gcnew Form1();
    			 }
    
    error C2065: 'f' : undeclared identifier
    error C2061: syntax error : identifier 'Form1'
    

    Nun möchte ich eben einfach von Form1 und von Form2 auf dieselbe Klasse zugreifen können bzw. auf Elemente der jeweilig andere Form.

    Lg _freeze_

    P.S.: Danke für den Hint, wodurch weiß ich jedoch das ich C++/CLI schreibe und nicht nur C++?



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Warum übergibst Du nicht Deiner Klasse eine Referenz auf Deine Instanz von Form1!?

    PS: C++/CLI beschäftigt sich mit dem .NET-Framework und setzt dieses zur AUsführung Deiner App voraus.


Anmelden zum Antworten