Laden...

Event Window schließen

Erstellt von Chris06 vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.948 Views
C
Chris06 Themenstarter:in
130 Beiträge seit 2006
vor 17 Jahren
Event Window schließen

Hi Leute,

hoffe ihr hattet schöne Weihnachten.
Die Feiertage sind ja seit ca. 45 Minuten offiziell vorbei.

Ich habe folgendes Problem,

ich möchte gerne auf Seiten mit eingabefeldern eine Sicherheitsabfrage einbauen, die verhindert das die Eingaben bei einem Wechsel der Seite oder schließen verloren gehen. (Web Form)

Dazu habe ich folgendes Beispiel gefunden, welches leider nicht funktioniert:

// zum Beispiel im Form Load Event eisetzen
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{            
	DialogResult result = MessageBox.Show("Sind Sie sicher?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
	if (result == DialogResult.No)
		e.Cancel = true;
}

Das this.FormClosing gibt es leider nicht, obwohl ich Windows.Forms eingebunden habe und .NET 2.0 benutze. Liegt wahrscheinlich daran, dass es eine Website ist.

Mein Versuch das mit:

 this.Form.Unload += new EventHandler (this.Form1_FormClosing);

zu machen ist leider auch gescheitert. Statt FormClosingEventArgs stand dann in der Methode nur EventArgs drinne. Damit wird meine Methode beim Laden der Seite und bei jedem Postpack ausgeführt. (Ich habe im Inet leider keine genaue Beschreibung gefunden, wann dieses unload ausgeführt wird) Aber das es auch beim öffnen der Page passiert, ist schon komisch?

Meine 3. Idee war dann sowas:

this.Form.Attributes.Add("OnFormClosing", "this.Form1_FormClosing")

Damit wurde meine Methode aber leider nie erreicht.

Ich habe also schon einiges probiert und viel im Inet gesucht.
Ich hoffe jemand kann mir bei meinem Problem helfen.

VG
Chris06

6.862 Beiträge seit 2003
vor 17 Jahren

Wie du schon festgestellt hast, du hast ne Webseite und keine Windows Forms Anwendung. Da kannst du dann auch solche Events die dir ein Schließen mitteilen vergessen, weil die gibt es schlicht und ergreifend nicht. Wenn jemand ein Browserfenster schließt, dann schließt er es einfach und fertig. Da kannst du imo nirgends noch ne Sicherheitsabfrage einbinden. Bin net der Javascript Freak, evtl. geht da noch was wenn der Browser nen entsprechendes JavaScript Event bietet. Serverseitig gibts aber IMO keine Möglichkeit sowas zu machen.

Baka wa shinanakya naoranai.

Mein XING Profil.

1.130 Beiträge seit 2005
vor 17 Jahren

Hallo Chris06,

der Body Tag besitzt ein OnUnload Event (-> Siehe Selfhtml.org). Allerdings ist dieser Event auch nicht verlässlich und die Möglichkeiten sind begrenzt.

C
Chris06 Themenstarter:in
130 Beiträge seit 2006
vor 17 Jahren

OK Danke,

kann mir auch noch jemand sagen warum der Unload Event in meinem Test so oft ausgeführt wird?

Nee Idee die mir gerade eingefallen ist:

Wie wäre es wenn ich bei dem Event der Texteingabe (ontextchanged) einen validator auf den save button setze? Das Problem dabei ist nur, das dann zwingend gespeichert werden muss.

Wenn ich das schließen des Browsers nicht abfangen kann, wie sieht es mit dem seitenwechsel aus? Kann man auf einen Response.Redirect reagieren? Oder geht das auch nicht....

1.130 Beiträge seit 2005
vor 17 Jahren

Hallo Chris06,

Original von Chris06
Wenn ich das schließen des Browsers nicht abfangen kann, wie sieht es mit dem seitenwechsel aus? Kann man auf einen Response.Redirect reagieren? Oder geht das auch nicht....

bitte den Unterschied zwischen clientseitigen u. serverseitigen Code nachlesen. Anschließend kannst Du dir die Frage selbst beantworten.

C
Chris06 Themenstarter:in
130 Beiträge seit 2006
vor 17 Jahren

OK, das geht also auch nicht 🙂

Kannst du dir das seltsame verhalten des unload erklären?

Habe in selfthml den event gefunden, nur vermute ich mal es wird nicht möglich sein den Event nach einer Abfrage abzubrechen?

C
Chris06 Themenstarter:in
130 Beiträge seit 2006
vor 17 Jahren

Also nach langem suchen habe ich eine passende js funktion gefunden, die das unload abfragt und abbrechen kann.

wenn ich diese funktion dem body als onbeforunload zuordne funktioniert es.
Nur leider soll ja nicht immer diese abfrage kommen.
Wie kann ich dem Body dynamisch meine funktion zuordnen?

sowas wie <meta> gibt es nicht im body (habe ich aus nem ms beispiel wo das im head gemacht wurde)

und form1.Attributes.Add("onbeforeunload", "Abfrage()") oder this.form.attributes.add klappt irgendwie auch nicht.

???