Snippet

Řízené zavírání aplikace.

Přidáno: 3.11.2007       Kategorie: VB.NET - Komponenty       Autor: Škývara Pavel

Jistě jste se setkali s aplikací, která nešla zavřít. Nefungovali křížky a podobné záležitosti.
Čím je to způsobené? U každé aplikace, pokud je zavírána je možné vyvolat událost Me.FormClosing. Řídící parametr jsou "eventArgs".
Nastavením eventArgs.Cancel = True se aplikace nikdy nezavře (Pozor na to)
Můžeme též zjistit kdo se pokusil naší aplikaci zavřit. K tomu slouží eventArgs.CloseReason.
Přiklad je snad dostačující.
Hodně štěstí.

Private Sub Form1_FormClosing(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Dim UnloadMode As System.Windows.Forms.CloseReason = eventArgs.CloseReason
        Dim Cancel As Boolean = eventArgs.Cancel

        'Me.label1.Text = UnloadMode.ToString
        'eventArgs.Cancel = True (aplikace se nezavre)

        'Pokusy o zavreni programu z ruznych stran 
        If UnloadMode = CloseReason.ApplicationExitCall Then eventArgs.Cancel = False
        If UnloadMode = CloseReason.FormOwnerClosing Then eventArgs.Cancel = False
        If UnloadMode = CloseReason.MdiFormClosing Then eventArgs.Cancel = False
        If UnloadMode = CloseReason.None Then eventArgs.Cancel = False
        If UnloadMode = CloseReason.TaskManagerClosing Then eventArgs.Cancel = False

        'priklad dotazu po kliknuti na 'X'
        If UnloadMode = CloseReason.UserClosing Then
            Dim x As String
            x = MsgBox("Ukončit aplikaci?", vbYesNo, "Ukončení aplikace")
            If x = vbNo Then Cancel = True
            eventArgs.Cancel = Cancel
        End If

        If UnloadMode = CloseReason.WindowsShutDown Then eventArgs.Cancel = False
    End Sub
 
 
 

VBNET.CZ | © 2007 Tomáš Herceg, Tomáš Jecha | Kopírování a přejímání jakéhokoliv obsahu z tohoto webu je bez písemného svolení autorů zakázáno.