Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von leonkurt.
Schließen verhindern
Hallo,
Wie verhindere ich das meine Form durch alt+f4 oder rechtsclick in task leiste beenden geschloßen werden kann?
und das es im Taskmanager angezeigt wird?
Selbstzerfändlich. Soll vielleicht nen Window mit Wärmeschutzverglasung werden?
@TE
Schau dir mal das Closing-Event der Form an.
Seit 26.Mai 2012 Oppa!
VB.NET-Quellcode
Dim boolClose AsBoolean
PrivateSub Form1_FormClosing(ByVal sender AsObject, ByVal e As System.Windows.Forms.FormClosingEventArgs) HandlesMe.FormClosing
Try
If boolClose =FalseThen
e.Cancel =True
'Mach was
Else
'Mach was
EndIf
Catch ex As Exception
EndTry
du Setzt "boolClose" auf False wenn es nicht geschlossen werden darf, und auf True wenn es sich schließen darf.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Annoxoli“ ()
Wenn du schon Code postest, dann bitte auch einen der Sinn ergibt. (Würde den gerne erklärt haben was der bewirkt)
Abgesehen davon, dass Vatter bereits auf die Lösung gedeutet (um die Eigeninitiative anzukurbeln) hat hier wenigstens Code der Sinn ergibt.
VB.NET-Quellcode
PrivateSub Form1_FormClosing(ByVal sender AsObject, ByVal e As System.Windows.Forms.FormClosingEventArgs) HandlesMe.FormClosing
SelectCase e.CloseReason
Case CloseReason.UserClosing ' ALT+F4, oben das 'X', usw
e.Cancel =True' Schließen abbrechen
Case CloseReason.WindowsShutDown ' Windows fährt runter und dein Programm ist offen
'was weiß ich
Case CloseReason.TaskManagerClosing ' Programm wird über Task-Manager gekillt
Wenn du schon Code postest, dann bitte auch einen der Sinn ergibt. (Würde den gerne erklärt haben was der bewirkt)
Abgesehen davon, dass Vatter bereits auf die Lösung gedeutet (um die Eigeninitiative anzukurbeln) hat hier wenigstens Code der Sinn ergibt.
VB.NET-Quellcode
PrivateSub Form1_FormClosing(ByVal sender AsObject, ByVal e As System.Windows.Forms.FormClosingEventArgs) HandlesMe.FormClosing
SelectCase e.CloseReason
Case CloseReason.UserClosing ' ALT+F4, oben das 'X', usw
e.Cancel =True' Schließen abbrechen
Case CloseReason.WindowsShutDown ' Windows fährt runter und dein Programm ist offen
'was weiß ich
Case CloseReason.TaskManagerClosing ' Programm wird über Task-Manager gekillt
' kA
EndSelect
EndSub
lg
Ich wende diese Methode schon lange so an, und Funktioniert fehlerfrei.
Wenn du es anders gelernt hast kann ich nichts dafür.
Hier EXTRA für dich die Erklärung..:
VB.NET-Quellcode
Dim boolClose AsBoolean
PrivateSub Form1_FormClosing(ByVal sender AsObject, ByVal e As System.Windows.Forms.FormClosingEventArgs) HandlesMe.FormClosing
Try
If boolClose =FalseThen
e.Cancel =True
'Mach was
Else
'Mach was
EndIf
Catch ex As Exception
EndTry
1. Wir deklarieren ein Boolean (Dim boolClose As Boolean)
2. Wenn wir nicht möchten, das die Form geschlossen wird, so setzten wir den Wert auf "False",
womit die Form nicht geschlossen werden kann.
3. Wenn die Form geschlossen werden darf, wird der Wert einfach auf "True" gesetzt.
Gruß
DU kannst diese ja anwenden, aber es ist nicht sauber. Fehlerfrei <> Sauber
- Try Catch in das Event einbauen für e.Cancel = True
- für was diese Boolean Variable
Es werden wie oben genannt sogar CloseReasons zur Verfügung gestellt um dementsprechend zu reagieren.
Kannte ich Persönlich nicht.
Das ist gut zu wissen.
Wie sagt man so schön ?
Man lernt sein leben lang..
Try Catch habe ich Standardmäßig überall eingebunden.
Die boolean Variable habe ich für folgenden zweck eingebunden:
In meinen Produkten minimiert sich das Program wenn man es schließt,
wenn der nutzer aber auf ein Spezifisches Feld klickt, wird dieser Wert auf "True" gesetzt, womit sich die Form schließen kann
Try Catch habe ich Standardmäßig überall eingebunden.
Das ist leider nicht sehr gut. Denn wenn dein Programm in den Catch Block gerät, lauft es ja nicht mehr so wie es laufen soll. Kannst du da garantieren, dass alles weitere, obwohl deine Methode nicht funktioniert hat, normal weiterlaufen kann?
²ErfinderDesRades: hat da wo nen Link wo dies gut erklärt wird.
Try-Catch sollte man nur in Ausnahmefällen verwenden.
Das ist leider nicht sehr gut. Denn wenn dein Programm in den Catch Block gerät, lauft es ja nicht mehr so wie es laufen soll. Kannst du da garantieren, dass alles weitere, obwohl deine Methode nicht funktioniert hat, normal weiterlaufen kann?
okay da hast du recht.
Dankeschön
und es soll kein Virus werden, ich habe nur weil es einfcher ist alles auf verschiedene vormen verlegt anstadt in pannels, deswegen konnte man sie ganz einfach schließen und das ist ja nicht sinn und zweck deswegen diese blockarde