Benutzer mit den meisten Antworten
Formen wechsel

Frage
-
Hallo,
ich benutze VS08 und würde gerne von form1 in Form 2 sprinegn.
Wenn ich diesen code verwende:
Form1::Hide (); Konsole^ NeueForm = gcnew Konsole(Pfadbox->Text); NeueForm->ShowDialog();
und dan Form2 über das Beenden X in der rechten oberen ecke schließe läuft das programm noch wie kann ich das unterbinden???
oder gibt es eine Möglichkeit Form1 zu beenden und form2 trozdem aufzurufen???
LG >Fakre<
Antworten
-
Du müsstest im Destructor von deiner Form2 ("Konsole") die Form1 schließen. Damit du von Form2 auf Form1 zugreifen kannst, musst du die sogenannte Vorwärtsdeklaration verwenden. Folgende Code-Schnipsel sollten helfen:
ref class Form1; namespace Meinnamespace { public ref class Form2 : public System::Windows::Forms::Form { private: Form1^ form1; //Ein Objekt von Form1 erstellen public: Form2(void) //Standardkonstruktor { InitializeComponent(); } public: Form2(Form1^ f) //Konstruktor der einen Zeiger auf ein Form1 Objekt übernimmt { this->form1 = f; //den Zeiger auf das eigene form1 Objekt übergeben InitializeComponent(); } protected: ~Form2() { if (components) { delete components; } form1->Close(); //das eigene form1 Objekt schließen, welches gleichzeitig das globale Form1 Objekt ist } ...
Das sollte funktionieren. Musst nur noch beim Aufruf / Erstellen deiner Form2 auch den neuen Kontruktor benutzen.Form2^ NeueForm = gcnew Form2(this);
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 21. Juli 2011 14:42
Alle Antworten
-
Du müsstest im Destructor von deiner Form2 ("Konsole") die Form1 schließen. Damit du von Form2 auf Form1 zugreifen kannst, musst du die sogenannte Vorwärtsdeklaration verwenden. Folgende Code-Schnipsel sollten helfen:
ref class Form1; namespace Meinnamespace { public ref class Form2 : public System::Windows::Forms::Form { private: Form1^ form1; //Ein Objekt von Form1 erstellen public: Form2(void) //Standardkonstruktor { InitializeComponent(); } public: Form2(Form1^ f) //Konstruktor der einen Zeiger auf ein Form1 Objekt übernimmt { this->form1 = f; //den Zeiger auf das eigene form1 Objekt übergeben InitializeComponent(); } protected: ~Form2() { if (components) { delete components; } form1->Close(); //das eigene form1 Objekt schließen, welches gleichzeitig das globale Form1 Objekt ist } ...
Das sollte funktionieren. Musst nur noch beim Aufruf / Erstellen deiner Form2 auch den neuen Kontruktor benutzen.Form2^ NeueForm = gcnew Form2(this);
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 21. Juli 2011 14:42