c# Form schließen

02/14/2012 14:11 kassor#1
Hallo leute...

Ich habe ein Problem, und zwar möchte ich eine Form schließen die ich
aufgerufen habe. Form.Close(). Ich weiss. Aber meine Situation ist bissl
komplitzierter.

Ich habe eine FormLogin, wo der user seine Logindaten eingeben kann.
Sobald sich das Programm versucht einzuloggen wird eine FormLaden
angezeigt.

Ist der Login fertig öffnet sich eine FormMain. FormLaden soll so lange
noch angezeigt werden bis die GUI von FormMain fertig geladen ist.
Dannach soll sie sich schließen.



Also noch mal kurz;

FormLogin öffnet FormLaden.
FormLogin schließt sich öffnet FormMain.
FormMain soll FormLaden wieder schließen.




Wie mache ich das?



Dankeschon mal :)
02/14/2012 15:39 vwap#2
Versteck einfach nach dem erfolgreichen Login die Login Form und öffne die Main Form.
Bei der Main Form fangst du dann noch das Closing Event ab, und schließt da das Programm komplett via Application.Exit().
02/14/2012 16:21 kassor#3
Quote:
Originally Posted by Headpuster View Post
Versteck einfach nach dem erfolgreichen Login die Login Form und öffne die Main Form.
Bei der Main Form fangst du dann noch das Closing Event ab, und schließt da das Programm komplett via Application.Exit().
Ja ich verstecke die FormLogin nach dem Login. Das ist nicht das Problem sondern die FormLaden ist ja noch offen. Und ich weiss nicht wie ich von der FormMain die bereits geöffnete FormLaden schließen kann.

Danke dir für deine Hilfe.. :)
02/14/2012 20:08 V8II#4
Ganz einfach. Normalerweise wird ja die erste Form per
Application.Run(new Form1);
erstellt. Stattdessen erstellst du einfach eine Instanz von Form1 und gibst diese mit .. ist ja eigentlich das selbe, nur, dass du später noch die Kontrolle darüber hast:
PHP Code:
static void Main()
        {
           
            
Application.EnableVisualStyles();
            
Application.SetCompatibleTextRenderingDefault(false);
            
Form1 MeineForm = new Form1();
            
Application.Run(MeineForm);
            
MeineForm.Close();
        } 
Ich hoffe ich habe deine Frage korrekt verstanden ^^
Mfg V8II
02/15/2012 01:51 LordFoobar#5
Du gibts FormMain eine Referenz auf FormLaden mit und kannst dann am Ende von Initialize() FormLaden einfach wieder schließen. Wahrscheinlich gehts auch eleganter mit einem Event, ich hab aber grade keine Lust nachzuschauen ob ein "fertig geladen" Event gefeuert wird.
02/17/2012 22:31 dasschild#6
Was das für ein 'cross linking' von Klassen wird.
Ich würde dir dringend empfehlen das ganze in die main funktion zu packen.
Die Forms sollten einen wert zurückgeben,damit du checken kannst ob alles geklappt hat.
Beispiel:
static void Main()
{

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
FrmLogin fLogin = new FrmLogin();
if(fLogin.WaitForResult ==true)
{
Application.Run(MeineForm);

}
Application.Exit();
}