Laden...

mittels [x] ALLES schließen...

8 Antworten
2,990 Aufrufe
Letzter Beitrag: vor 19 Jahren
mittels [x] ALLES schließen...

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.

Baka wa shinanakya naoranai.

Mein XING Profil.

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?

Baka wa shinanakya naoranai.

Mein XING Profil.

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.