2010-02-13 4 views
7

Ich habe ein Code-Snippet, das ich ausführen möchte, wenn die App geschlossen wird. Also habe ich FormCLosing Ereignis verwendet. Aber jetzt möchte ich eine Bestätigungsnachricht zum Beenden platzieren. Wenn der Benutzer beispielsweise auf die Schaltfläche Exit (X) klickt, wird eine Eingabeaufforderung angezeigt. Wenn er auf NO klickt, wird die App nicht geschlossen und kehrt zum vorherigen Status zurück.VB.NET: Abbrechen FormClosing()

Jetzt finde ich das schwer zu erreichen mit FormClosing Ereignis. weil es ausgeführt wird, egal auf welche Schaltfläche der Benutzer klickt. Irgendwelche Abhilfe dafür?

Ich meine, ich brauche eine noch wie ExitButtonPressed() ..

Antwort

18

Sie könnten versuchen, so etwas wie

Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing 
    If (MessageBox.Show("Close?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.No) Then 
     e.Cancel = True 
    End If 
End Sub 

Werfen Sie einen Blick auf

FormClosingEventArgs Class

Und

CancelEventArgs.Cancel Property

Das Ereignis kann abgebrochen werden, indem die Cancel-Eigenschaft auf true festgelegt wird.

+0

Innerhalb des FormClosing-Ereignisses. –

+0

Ja, tut mir leid, hat das geändert X-) –

+0

Danke. aber jetzt ein anderes Problem. http://stackoverflow.com/questions/2256909/vb-net-messagebox-with-yesnocancel-no-cancel-triggers-same-event –

0

'Button2 und Schließen-Knopf des Formulars sowohl schließt die Form die gleiche fragen'

Dim button2Yes As Boolean = False Private Sub Button2_Click (Absender als Gegenstand, e As EventArgs) Griffe Button2.Click Frage

If MessageBox.Show(" Sure to close? ", "CLOSING CONTROL", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then 
     button2Yes = True 
     Me.Close() 
    Else 
     button2Yes = False 
    End If 
End Sub 

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles Me.FormClosing 
    If Not button2Yes Then 
     If Not MessageBox.Show(" Sure to close? ", "CLOSING CONTROL", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then 
      e.Cancel = True 
     End If 
    End If 
End Sub