Forum: PC-Programmierung Form1 schließen verhindern C#


von Florian W (Gast)


Lesenswert?

Hallo,
für ein Projekt muss ich zum schließen erst einen "gesicherten" Stopp 
erzeugen, damit meine Daten usw fertig geschriebn werden und ich muss 
solange warten.
Kann ich es irgendwie einstellen, das solange meine Form1 läuft es dem 
Benutzer nicht möglich ist, das rote X oben in der Ecke zu drücken? also 
so wie disablen?

mfg

von Peter II (Gast)


Lesenswert?


von Florian W (Gast)


Lesenswert?

ich mein damit eher das das NICHT möglich ist.
Das Maximieren, minimieren kann man ja auch leicht ausmachen, geht das 
nicht mit dem schließen auch?

von Closett (Gast)


Lesenswert?

Hast Du denn den kompletten Text im Link gelesen und auch verstanden?

von Florian W (Gast)


Lesenswert?

Ja schon!
Dachte aber es geht vl eleganter, dass man den Button erst gar nicht 
drücken kann. Dann weis der Benutzer sofort wenn er hinschaut, dass er 
erst das sichere beenden machen muss.

von Peter II (Gast)


Lesenswert?

Florian W schrieb:
> Ja schon!
> Dachte aber es geht vl eleganter, dass man den Button erst gar nicht
> drücken kann. Dann weis der Benutzer sofort wenn er hinschaut, dass er
> erst das sichere beenden machen muss.

dann ändere doch die eigenschaft auf Dialog ab, dann gibt es diesen 
button nicht.

von Florian W (Gast)


Lesenswert?

Ich glaub ich nehm doch die Lösung die im Link beschrieben ist, aber 
leider: keine Plan wie ich das realisiere.
kann man das über 2 Buttons steuern?
D.h. wenn ich Button 1 drücke wird die Cancel Eigenschaft auf true 
gesetzt und nach drücken von Button2 wieder auf false?
Wo und wie muss ich das machen?

mfg

von Thomas K. (muetze1)


Lesenswert?

In dem Link werden die die beiden Funktionen dokumentiert mit denen du 
einen Handler für das Form-Close Ereignis hinterlegen und wieder 
entfernen kannst. Das Form-Close Ereignis wird ausgelöst, wenn das Form 
geschlossen werden soll. Dieses kann unterschiedlich ausgelöst werden, 
z.B. durch ALT-F4, STRG-F4 (MDI), Schliessen Button, Aufrufen der 
Close() Methode, etc. Wenn dein installierter Handler nun nach dem 
Eintritt des Ereignisses aufgerufen wird, so kannst du die Cancel 
Eigenschaft des Arguments entsprechend deiner Vorlieben setzen.

von Karl H. (kbuchegg)


Lesenswert?

Thomas K. schrieb:

> z.B. durch ALT-F4, STRG-F4 (MDI), Schliessen Button, Aufrufen der
> Close() Methode, etc.

Und bitte auch nicht drauf vergessen, dass auch Windows schon mal einen 
Close anordnen kann - zb wenn es runterfährt und dein Programm noch 
geöffnet ist.

von Frank M. (aktenasche)


Lesenswert?

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.controlbox.aspx

auch wenn ich von dem vorhaben was usability angeht überhaupt nichts 
halte

von M. D. (mavrxmega)


Lesenswert?

Ereignis Form.Closing müsstest du mit Hilfe der 
Ereignis-Übergabeparameter das Schliesen abbrechen können.

von Markus D. (emtec)


Lesenswert?

Du kannst das schliessen der Anwendung verhindern, indem du innerhalb 
des FormClosing-Events die Eigenschaft 'Cancel' auf 'true' oder 'false' 
setzt. Dementsprechend wird die Anwendung geschlossen oder nicht. Die 
Eigenschaft 'Cancel' kannst du über den an FormClosing übergebenen 
Parameter 'e' (FormClosingEventArgs) erreichen. Also z.B e.Cancel = 
true; verhindert das schließen der Anwendung.

Grüße

von MaWin (Gast)


Lesenswert?

> dass man den Button erst gar nicht drücken kann. Dann weis der
> Benutzer sofort wenn er hinschaut, dass er erst das sichere
> beenden machen muss

Im Gegenteil.

Dann weiß der Benutzer, daß er ein verficktes Programm von einem 
idiotischen Programmierer vor sich hat, der mal wieder die 
Weltherrschaft übernehmen wollte, sich aber dabei übernahm.

Es spricht NICHTS dagegen, bei einem Schliessen einer Form über X das 
sichere Beenden durchzuziehen. Das passiert dann auch wenn man den 
Rechner runterfährt, der sonst nur runterfahren würde, wenn man die 
Anwendung gnadenlos abschiesst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.