Windows Form beim aufruf der 2ten Form beenden
-
Nein. Bei Erfolgreicher anmeldung ,wird auf die Mainview weitergeleitet(bzw sollte zumindest) und die Login Form sollte sich beenden. Bei erfolglose Anmeldung, popt eine Messagebox auf mit entsprechendem Hinweis,dass die Login Daten falsch sind.
Dies wird mit einer entsprechenden If-Abfrage gemacht.
-
Also das ist doch dasselbe:
theta schrieb:
Du hast eine Login Form welche als erstes gezeigt wird und nach erfolgreicher Anmeldung wird das Hauptfenster gezeigt?
^bnL schrieb:
Bei Erfolgreicher anmeldung ,wird auf die Mainview weitergeleitet(bzw sollte zumindest) und die Login Form sollte sich beenden.
-
theta schrieb:
Also das ist doch dasselbe:
theta schrieb:
Du hast eine Login Form welche als erstes gezeigt wird und nach erfolgreicher Anmeldung wird das Hauptfenster gezeigt?
^bnL schrieb:
Bei Erfolgreicher anmeldung ,wird auf die Mainview weitergeleitet(bzw sollte zumindest) und die Login Form sollte sich beenden.
Das "Nein" war auf deinen 2ten Satz bezogen.
-
Aha...
-
Beende Deine Anwendung aus der MainView mit...
Application::Exit();
-
Doug_HH schrieb:
Beende Deine Anwendung aus der MainView mit...
Application::Exit();
Danke! Werde mich bei bedarf nochmals melden.
-
Wie wäre es das Login-Form aus dem Hauptformular aufzurufen? Das wäre zumindest der korrekte Weg.
-
inflames2k schrieb:
Wie wäre es das Login-Form aus dem Hauptformular aufzurufen? Das wäre zumindest der korrekte Weg.
Darauf habe ich es inzwischen auch umgebaut.
Login Hide usw Funktioniert auch ohne Probleme.Allerdings bisher bei der Main nicht. Jedoch war des gestern auch nur auf die schneller noch gemacht. Muss da Heute mal genauer schauen.Denke,dass ich da einfach vor lauter Schlafmangel nicht richtig aufgepasst habe und dadurch einen Layer 8 Fehler eingebaut habe
-
Leider kein Erfolg. Ich kann alles(Login Form,menustrip,button usw) Hiden bis auf die von main() aufgerufene Form (in diesem Fall MainView).
Ich versuche nochmals es passend zu beschreiben was ich vorhabe.
Gegeben:
- MainView Form (wird direkt von Main aufgerufen)
- Login Form( wird durch eine Form_Load Funktion aufgerufen)Der aufruf der beiden Formen funktioniert ohne Probleme. Nun möchte ich jedoch die MainView erst einblenden lassen,wenn der Login Erfolgreich war ( abfrage steht hierfür statisch bisher). Sprich "Login Erfolgreich, weiterleitung zu -> MainView).
Jedoch lässt sich leider MainView aus welchen Gründen auch immer nicht verstecken/ausblenden, wahtever...
Hat einer noch eine Idee bzw kann die Vermutung von mir bestätigen, dass man eine von Main() aufgerufene Form nicht verstecken kann ?!
Vielen Dank!
-
Du brauchst nur die Login-Form mittels ShowDialog(this) aufzurufen, dann blockiert dieser Aufruf solange, bis der User diesen Dialog schließt und danach geht es dann im Ablauf weiter und die MainForm wird angezeigt.
Besser finde ich jedoch, wenn in der Main zuerst der Aufruf des Login-Dialogs erfolgt und danach dann erst die Main-Form mittels Application.Run aufgerufen wird.
-
^bnL schrieb:
Hat einer noch eine Idee bzw kann die Vermutung von mir bestätigen, dass man eine von Main() aufgerufene Form nicht verstecken kann ?!
Eine aus Main mittels Application.Run aufgerufene Form kann ausgeblendet werden!
Beispiel:
public partial class MyForm : Form { protected overwrite void OnShown() { this.Visible = false; DialogResult result = DialogResult.Cancel; do { result = MyLoginForm.ShowDialog(); }while(result != DialogResult.OK); this.Visible = true; } }
-
Vielen Dank zuallererst an euch Beide !
Th69 schrieb:
Du brauchst nur die Login-Form mittels ShowDialog(this) aufzurufen, dann blockiert dieser Aufruf solange, bis der User diesen Dialog schließt und danach geht es dann im Ablauf weiter und die MainForm wird angezeigt.
Besser finde ich jedoch, wenn in der Main zuerst der Aufruf des Login-Dialogs erfolgt und danach dann erst die Main-Form mittels Application.Run aufgerufen wird.
Wenn der User jedoch abbricht, wird ihm die MainView angezeigt. Jedoch müsste man diese Aktion mittels einer if abfrage abfangen können,oder ?
Mit den anpassungen an meine Form, spruckt der Compilier mir jede Menge Meldungen aus. (werde diese alle weiter unten Posten). Jedoch ist aus meiner Sicht momentan das Problem,dass Hide bzw visable = flase nicht greift.
this.viable = false
Spruckt folgendes aus
All outputs are up-to-date.
1> Login.cpp
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(22): error C2228: left of '.Visible' must have class/struct/union
1> type is 'Client::Main ^const '
1> did you intend to use '->' instead?Wenn ich dieser Anweisung folge und den Punkt auswechsel kommt keine Meldung mehr,aber die Anweisung wird auch nicht umgesetzt.
Wie oben angesprochen die Meldungen des Compiliers mit der Methoden deklaration der Class.
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(27): error C2144: syntax error : 'void' should be preceded by ';'
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(27): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(29): error C2228: left of '.Visible' must have class/struct/union
1> type is 'Client::Main ^const '
1> did you intend to use '->' instead?
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(30): error C2146: syntax error : missing ';' before identifier 'result'
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(30): error C2065: 'result' : undeclared identifier
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(30): error C2039: 'Cancel' : is not a member of 'System::Enum'
1> c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : see declaration of 'System::Enum'
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(34): error C2065: 'result' : undeclared identifier
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(34): error C2228: left of '.ShowDialog' must have class/struct/union
1> type is 'Client::Login ^'
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(36): error C2065: 'result' : undeclared identifier
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(36): error C2039: 'OK' : is not a member of 'System::Enum'
1>c:\users\marcus\documents\ipx\zentraldockma\client\client\Main.h(37): error C2228: left of '.Visible' must have class/struct/union
1> Generating Code...
1>
1>Build FAILED.Wo muss ich denn overwrite void OnShown() initialisieren( dies ist die erwähnte zeile)? Sorry, bin noch nicht solange an OOP dran bzw allgemein C++.
Danke für eure Hilfe !
-
Der gezeigte Code kommt nicht ins Main, sondern in die Form!
Zweitens ist der geziegte Code C# und muss noch nach C++/CLI portiert werden, was aber kein Kopfzerbrechen verursachen sollte.
-
Daher auch mein Vorschlag mit dem sparaten Aufruf der Login-Form vor der MainView (so daß du mittels einer if-Anweisung den Aufruf steuern kannst).
Und inflames2k hat C#-Code gepostet, daher unter C++/CLI einfach Punkt "." durch Pfeil "->" (bzw. "::" bei Namensbereichen und statischen Methoden ersetzen...
Und die restlichen Syntaxfehler wirst du wohl alleine lösen können...
-
Sorry, beim Code hatte ich nicht mitgedacht, dass du ja in C++/CLI bist. Sollte jedoch kein Problem darstellen, den Code anzupassen.
Zu Th69's Vorschlag:
Geh doch einfach wie folgt vor:
- Anzeigen des Loginformulars
-> Zeige an solange keine erfolgreiche Anmeldung erfolgt ist (Ausnahme Abbruch)
- War der Login erfolgreich?
-> Schließe Loginformular und öffne Hauptformular
- Wurde der Login abgebrochen?
-> Beende Applikation
-
sorry,dass ich mich erst so spät melde. Momentan nur zu viel um die Ohren...
inflames2k schrieb:
Sorry, beim Code hatte ich nicht mitgedacht, dass du ja in C++/CLI bist. Sollte jedoch kein Problem darstellen, den Code anzupassen.
Zu Th69's Vorschlag:
Geh doch einfach wie folgt vor:
- Anzeigen des Loginformulars
-> Zeige an solange keine erfolgreiche Anmeldung erfolgt ist (Ausnahme Abbruch)
- War der Login erfolgreich?
-> Schließe Loginformular und öffne Hauptformular
- Wurde der Login abgebrochen?
-> Beende ApplikationAnsich hatte ich es mir ja auch so gedacht. Nur dass Problem ist bei mir nur dass entsprechende schließen der Form wieder...
theta schrieb:
Der gezeigte Code kommt nicht ins Main, sondern in die Form!
Zweitens ist der geziegte Code C# und muss noch nach C++/CLI portiert werden, was aber kein Kopfzerbrechen verursachen sollte.Der Code war aus der Header File (Main.h)der Form und nicht der Main Function.
Den rest des Abends werde ich noch eure Vorschläge versuchen. Vielen Dank!
-
Application::Exit();
-
Guten Abend,
leider habe ich bisher wieder keine Zeit gefunden ...
Ich möchte mich erst einmal bei euch bedanken.Ich melde mich wieder,sobald ich es entweder selber geschaft habe und wieder einmal feststecke.
Nur bin ich bisher (wie oben schon erwähnt) Zeittechnisch nicht dazu gekommen eure Vorschläge zu testen und werde es die nächsten Wochen auch nicht.Vielen Dank!