Hi,
ich hab eine Frage zum schließen von Forms. Ich hab eine Main Form (Login Screen). Nach dem einloggen wird diese Main Form mittels
Mainform.Hide()
einfach versteckt und nicht angezeigt. Nun kann ich ja mit
Application.Exit()
die gesamte Anwendung closen. Wunderbar 🙂 Jedoch nicht, wenn der User auf das [x] klickt bzw. doppelt aufs Icon oben links im Programm.
Kann ich irgendwie darauf zugriefen und sagen, sobald dieser Icon-Doppelklick stattfindet bzw. jemand aufs [x] klickt, dass die gesamte Anwendung geschlossen wird wie eben mit
Application.Exit()
? Ansonsten läuft ja meine Mainform weiter im Hintergrund weiter 🙁
Danke für jede Hilfe 🙂
beste Grüße
K2k
Schau mal nach dem Form.Closing Event.
danke für den Tipp...
hab gerade in der MSDN geschaut und des stückchen code ausprobiert, jedoch klappts bei mir net 🙁 wieso auch immer...
mein Mainform heißt: Login, mein Hauptfenster in dem sich die Operationen befinden heißt Main...
so, nun hab ich nur die Methode reingehauen:
private void Main_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if(MessageBox.Show("Do you want to save changes to your text?", "My Application",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
e.Cancel = true;
}
}
und mal nen Breakpoint reingestellt um zu sehen ob er überhaupt da reinspringt, aber der ist nie da drin... 🙁 Wann sollte er da reinhüpfen? sobald ich auf eine art und weise versuche des Form zu closen, oder?
Gruß
K2k
Hi,
Du wirst ja wohl nicht folgende Zeile vergessen haben...?
this.Closing += new System.ComponentModel.CancelEventHandler(this.EPForm_Closing);
Ich habs so verstanden dass deine Main Form ja versteckt ist, und du ne andere Form offen hast, und wenn die geschlossen wird, soll das Programm beendet werden? Dann musst du auch das Event vom Fenster das du schließt abfangen und nicht das der Mainform oder hab ich da was falsch verstanden?
Original von Fischi
Hi,
Du wirst ja wohl nicht folgende Zeile vergessen haben...?this.Closing += new System.ComponentModel.CancelEventHandler(this.EPForm_Closing);
Ne, hab ich net wirklich, ist gleich beim initialisieren mit dabei... geht aber trotzdem auch net 🙁
Original von talla
Ich habs so verstanden dass deine Main Form ja versteckt ist, und du ne andere Form offen hast, und wenn die geschlossen wird, soll das Programm beendet werden? Dann musst du auch das Event vom Fenster das du schließt abfangen und nicht das der Mainform oder hab ich da was falsch verstanden?
jo, meine benamung ist net gerade ideal gewählt gerade 😉
Login Form = Mainform... des heißt einfach, dass ich dieses Fenster (Login) closen will von einem anderen, das aus dem Login Form gestartet wird... und das geht halt irgendwie net 🙁 strange...
Danke
K2k
Gibt es auch eine möglichkeit das man denn im Rechten Ecken befesstigten button [X] ausblenden kann, damit schlussentlich das Formuluar nur noch über einen Butten Beenden wirklich geschlossen werden kann?
Form.ControlBox ist für das X zuständig.
Im FW 2.0 hat MS einen einfacheren Weg für VB.NET eingebaut, der aber auch von C# aus zu benutzen ist,
und einige Verenkungen weniger braucht.
( ApplicationEvents in VB.NET )
Setz eine Referenz auf "Microsoft.VisualBasic.dll".
Dann gehe in deine "Programm.cs" und ändere deine Main() folgendermassen:
static void Main( string[] args )
{
Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase MyApp = new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase();
MyApp.Startup += new Microsoft.VisualBasic.ApplicationServices.StartupEventHandler( MyApp_Startup );
Application.EnableVisualStyles();
MyApp.ApplicationContext.MainForm = new MainForm();
MyApp.Run( args );
}
static void MyApp_Startup( object sender, Microsoft.VisualBasic.ApplicationServices.StartupEventArgs e )
{
LoginForm lf = new LoginForm();
e.Cancel = ( lf.ShowDialog() == DialogResult.OK );
}
Wenn deine LoginForm jetzt also DialogResult.OK liefert, geht es weiter,
sonst wird dein Proogramm beendet.