grey1987 Geschrieben 21. November 2008 Geschrieben 21. November 2008 Hallo, die Übrschrift ist wohl nicht so günstig gewählt, aber mir fällt nichts besseres ein. Ich hab zwei Forms (Form1 und Form2) und noch eine. Ich öffne Form2 mit Form1 (also ein button): Form2^ form2 = gcnew Form2(); form2->ShowDialog(); und nun wollte ich im Form 2 einem Button eine Funktion öffnen, die in Form1 enthalten ist und auch da laufen soll (die Funktion füllt etwas in ein DataGrid und das DataGrid ist nunmal in Form1). jedoch ohne dass ich Form2 schließen muss. Ich hab mir das so gedacht: private: System::Void buttonQueryOK_Click(System::Object^ sender, System::EventArgs^ e) { Form1^ form1 = gcnew Form1(); form1->loadQuery(); } klappt aber nicht... Danke schonmal... Gruss Zitieren
Guybrush Threepwood Geschrieben 21. November 2008 Geschrieben 21. November 2008 Natürlich nicht, du erstellst ja eine neue Form1. Du brauchst aber die Instanz von Form1 welche deine Form2 geöffnet hat. Eine Möglichkeit wäre den Konstruktor von Form 2 so anzupassen das du die Instanz von Form1 übergeben kannst und dann kannst du darüber einfach deine Methode aufrufen... Zitieren
grey1987 Geschrieben 21. November 2008 Autor Geschrieben 21. November 2008 für mich klingt das ein bisschen kompliziert. (bin anfänger) wie kann ich denn die intanz von Form1 im Konstruktor von Form2 übergeben? Zitieren
Guybrush Threepwood Geschrieben 21. November 2008 Geschrieben 21. November 2008 Indem du du diesen wie gesagt anpasst: public partial class Form2 : Form { private Form1 form1; public Form2(Form1 form1) { this.form1 = form1; InitializeComponent(); } public click() { form1.foo(); } } [/PHP] Zitieren
grey1987 Geschrieben 3. Dezember 2008 Autor Geschrieben 3. Dezember 2008 das klappt nicht so ganz... public ref class Form2 : public System::Windows::Forms::Form { private: Form1 form1; public: Form2(Form1 form1) { this->form1 = form1; InitializeComponent(); } } (mein Programm heißt getwindowrect) Fehler: 1>c:\vsprojects\getwindowrect\getwindowrect\Form2.h(24) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'form1' 1>c:\vsprojects\getwindowrect\getwindowrect\Form2.h(24) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\vsprojects\getwindowrect\getwindowrect\Form2.h(24) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\vsprojects\getwindowrect\getwindowrect\Form2.h(26) : error C2061: Syntaxfehler: Bezeichner 'Form1' 1>c:\vsprojects\getwindowrect\getwindowrect\Form2.h(28) : error C2039: 'form1': Ist kein Element von 'getWindowRect::Form2' 1> c:\vsprojects\getwindowrect\getwindowrect\Form2.h(22): Siehe Deklaration von 'getWindowRect::Form2' Zitieren
Empfohlene Beiträge
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.