Wie kann ich verhindern, dass sich ein Form mit ALT+F4 schließen lässt?
-
Ich habe genau 10sec gebraucht, um es durch ausprobieren herauszufinden...
Stichwort: OnClosing() redefinieren.
btw. ist das tatsächlich nicht furchtbar wünschenswert. Sollte ich jemals Software von dir in die Finger kriegen, werd ich den SecurityManager so einstellen, dass er deinem Programm alles untersagt, was über das Belegen von 1MB Arbeitsspeicher hinausgeht.
-
Jetzt beruhigt euch mal wieder. Es gibt durchaus Gründe, warum man einen Dialog nicht-schließbar machen möchte. Zum Beispiel, wenn er eine Progress-Anzeige enthält und man den Vorgang nicht abbrechen kann. Oder wenn der Benutzer den Dialog nicht einfach mit Enter, Cancel oder Alt-F4 abbrechen soll, sondern etwas anderes machen muß.
-
gustav-eugen-1234 schrieb:
Jetzt beruhigt euch mal wieder. Es gibt durchaus Gründe, warum man einen Dialog nicht-schließbar machen möchte. Zum Beispiel, wenn er eine Progress-Anzeige enthält und man den Vorgang nicht abbrechen kann.
es gibt keine nicht-abbrechbaren vorgänge.
Oder wenn der Benutzer den Dialog nicht einfach mit Enter, Cancel oder Alt-F4 abbrechen soll, sondern etwas anderes machen muß.
genau das isses. du willst mich zwingen, was zu machen, und ich will nicht, sondern kündige dein scheiß-programm und drücke die kündigungs-tasten-kombo alt+f4 und dann sagt dein scheiß-programm auch noch "ätsch, der vertrag ist mit heiligem blut unterschrieben, du kommst hier nicht raus".
naja, bei mir lebt das programm dann vermutlich noch 4 sekunden, das ist die ausschalter-verzögerung vom board. unhöfliche software hat nämlich auch fast immer schad-funktionen.
es hat eh keinen zweck, dann erst dies und dann das zu klicken, bis so ein programm zufrieden ist. und man miß ja auch angst haben, was es macht, wenn es die eingaben hat. wer alt+f4 verbietet, saut auch in fremden verzeichnissen rum.
-
gustav-eugen-1234 schrieb:
Jetzt beruhigt euch mal wieder. Es gibt durchaus Gründe, warum man einen Dialog nicht-schließbar machen möchte.
Ich kenne keine guten. Aber nicht schließbar würde ich einen Dialog wenn dann damit machen, dass ich den Button dafür deaktiviere und nicht das Fenster einfach nicht schließe. Das ist aus Benutzersicht ein absoluter Albtraum.
-
Habe es leider mit OnClosing nicht hinbekommen habs so probiert.
private new void OnClosing(object sender, System.ComponentModel.CancelEventArgs e) { }
Das ganze ist ein Dialog beim Starten. Man kann sich einen Modus auswählen. Wenn ich das schließen zulassen würde wäre der ausgewählte Modus einfach zufällig. Es gibt nur einen OK Knopf den man halt drücken muss.
Ich glaulbe nicht, dass das jemand stören wird.
-
Du musst bei dem übergebenen CancelEventArgs das Abbrechen auf true stellen. Und eine new Methode ist natürlich sinnlos, das wird niemals aufgerufen. Du musst das Form.OnClosing overriden mit dem *tusch* override-Keyword. Das sind Grundlagen...
-
tempbläd schrieb:
Das ganze ist ein Dialog beim Starten. Man kann sich einen Modus auswählen. Wenn ich das schließen zulassen würde wäre der ausgewählte Modus einfach zufällig.
kannste nicht einfach das ganze programm beenden, wenn jemand deine modus-auswahl mit alt+f4 beendet?
oder meinste beim starten von windows?
-
Soweit so gut. Ist natürlich etwas unschön. Besser gelöst find ich das bei der MessageBox, wenn man MessageBoxButtons.YesNo auswählt hat man ein gegrautes Kreuz und Alt+F4 geht auch nicht. So müsste es sein.
-
private void Form_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == (Keys.Alt | Keys.F4)) e.Handled = true; }
-
volkard schrieb:
wenn du das bei mir versuchst, schieß ich den prozess aber sofort mit dem taskmanager ab, lösche dann die datei von der platte, schreib dir ne böse mail und verunglimpfe deine software, wo ich kann.
Kannst du mal ein bisschen aus deiner Mail an Bill Gates zitieren, in der du ihn dafür beschimpfst, dass Word und Konsorten beim Beenden gerne mal nachfragen, ob du das aktuelle Dokument speichern willst? Hat sicher einigen Unterhaltungswert
-
volkard schrieb:
es gibt keine nicht-abbrechbaren vorgänge.
Eine Software, bei der alles abbrechbar programmier ist, würde exorbitant hohe Entwicklungszeiten haben und wäre somit auch von keinem Käufer bezahlbar.
Vor allem wenn eine Operation nur ein paar Sekunden dauert, lohnt sich das überhaupt nicht. Da wird ein Progress-Dialog angezeigt, und gut ist. Daß der dann nicht abbrechbar ist, macht doch nur Sinn.volkard schrieb:
Oder wenn der Benutzer den Dialog nicht einfach mit Enter, Cancel oder Alt-F4 abbrechen soll, sondern etwas anderes machen muß.
genau das isses. du willst mich zwingen, was zu machen, und ich will nicht, sondern kündige dein scheiß-programm und drücke die kündigungs-tasten-kombo alt+f4 und dann sagt dein scheiß-programm auch noch "ätsch, der vertrag ist mit heiligem blut unterschrieben, du kommst hier nicht raus".
naja, bei mir lebt das programm dann vermutlich noch 4 sekunden, das ist die ausschalter-verzögerung vom board. unhöfliche software hat nämlich auch fast immer schad-funktionen.
es hat eh keinen zweck, dann erst dies und dann das zu klicken, bis so ein programm zufrieden ist. und man miß ja auch angst haben, was es macht, wenn es die eingaben hat. wer alt+f4 verbietet, saut auch in fremden verzeichnissen rum.Hast du irgendein traumatisches Erlebnis gehabt, oder warum siehst du immer nur negativ? Manchmal erfordert ein Dialog nunmal, daß der User mehr als nur ja/nein oder ok/abbrechen auswählt, und dann muß auch alt+f4 ausgeschaltet werden. Das heißt ja nicht zwangsweiße, daß der User den Dialog überhaupt nicht los wird, sondern nur auf andere Weise als mit alt+f4
Aber was solls. Manche Leute wollen eben nichts anderes als ihre engstirnige Meinung dulden. Zudem hat deine Ausdrucksweise doch gewisse Ähnlichkeit mit Troll-Postings im Heise-Forum; und Trolle soll man ja bekanntlich nicht füttern.
Und tschüß
-
gustav-eugen-1234 schrieb:
Eine Software, bei der alles abbrechbar programmier ist, würde exorbitant hohe Entwicklungszeiten haben und wäre somit auch von keinem Käufer bezahlbar.
Vor allem wenn eine Operation nur ein paar Sekunden dauert, lohnt sich das überhaupt nicht. Da wird ein Progress-Dialog angezeigt, und gut ist. Daß der dann nicht abbrechbar ist, macht doch nur Sinn.Ich habe volles Verständnis, wenn ein Defragmentierungsprogramm beim physischem Verschieben einer Datei den Vorgang nicht einfach abbricht. Das heißt aber noch lange nicht, dass man das Fenster nicht schließen kann.
@Noodles: Bei deiner Methode kann man immer noch auf das Kreuz klicken
-
Optimizer schrieb:
@Noodles: Bei deiner Methode kann man immer noch auf das Kreuz klicken
Ich weiß, aber die Ausgangsfrage war ja:
Wie kann ich verhindern, dass sich ein Form mit ALT+F4 schließen lässt?
-
Optimizer schrieb:
Stichwort: OnClosing() redefinieren.
Sollte man lieber OnClosing redefinieren oder einen Handler für Closing installieren?
-
Kann man vielleicht nicht allgemein sagen. In meinem einzigen Windows-Forms Projekt reagiert meine Form auf die Events alle direkt selber, weil es keinen anderen Programmteil gibt, der sowas irgendwie interessant finden könnte. Ich verwende also gar keine Handler. Ich finde es mit Redefinieren einfacher und laut MSDN
The OnClosing method also allows derived classes to handle the event without attaching a delegate. This is the preferred technique for handling the event in a derived class.
Begründung fehlt hier aber auch.
Einen Vorteil hat die Methode mit Redefinieren auf jeden Fall, du kannst entscheiden, ob die Event-Handler das überhaupt mitgeteilt bekommen. Wenn du eine MessageBox anzeigst "wollen sie wirklich beenden" und der User sagt nein, dann rufst du einfach base.OnClosing() nicht auf.