2017-06-09 2 views
-2

Ich versuche, meine Anwendung mit Formularschließereignis zu beenden, aber Bestätigungsmeldung wird zweimal angezeigt. DieseAnwendung mit FormClosing-Ereignis schließen VB.net

ist, was ich habe:

Private Sub FrmMainPlatform_FormClosing(sender As Object, e As FormClosingEventArgs) _ 
Handles MyClass.FormClosing 

    Dim result As Integer 
    result = MessageBox.Show("Are you want to close", "Exit", MessageBoxButtons.YesNo, MessageBoxIcon.None) 
    If (result = DialogResult.No) Then 
     e.Cancel = True 
    Else 
     Application.Exit() 
    End If 

End Sub 

ich auch mit dieser Lösung versucht:

Private Sub FrmMainPlatform_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 
Select Case MessageBox.Show("Are you sure you want to exit?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) 
    Case Windows.Forms.DialogResult.Yes 
     'nothing to do here the form is already closing 
    Case Windows.Forms.DialogResult.No 
     e.Cancel = True 'cancel the form closing event 
     'minimize to tray/hide etc here 
    End Select 
End Sub 

Die Form wird geschlossen, aber die Anwendung i noch läuft.

+0

Wird es zweimal angezeigt, wenn Sie auf Ja klicken? – dbasnett

+0

ja es erscheint zweimal –

+0

Dieser Code funktioniert gut für mich, also muss es etwas anderswo sein, das das Problem verursacht. Sind Sie sicher, dass genau dieser Code zweimal aufruft? Setzen Sie einen Haltepunkt auf 'Select Case MessageBox.Show (" Möchten Sie wirklich beenden? "," Confirm ", MessageBoxButtons.YesNo, MessageBoxIcon.Question)' und führen Sie den Code aus. Fällt es zweimal? – Bugs

Antwort

0
Private Sub FrmMainPlatform_FormClosing(sender As Object, e As FormClosingEventArgs) _ 
    Handles Me.Closing 

    Dim result As Integer 
    result = MessageBox.Show("Are you want to close", "Exit", MessageBoxButtons.YesNo, MessageBoxIcon.None) 
    If (result = DialogResult.No) Then 
     e.Cancel = True 
    Else 
     Application.Exit() 
    End If 

End Sub 

Hallo, Ich habe vorübergehende Lösung für dieses Problem. Die Exit-Methode löst nicht die Closed- und Closing-Ereignisse aus, die seit .NET Framework 2.0 veraltet sind

0

@karihalan, ich glaube, Sie müssen zuerst sicherstellen, dass das Form1 tatsächlich das Startformular Ihrer Anwendung ist. Sie können dies aus den Projekteigenschaften bestätigen. Wenn ja, müssen Sie nicht einmal Application.Exit() aufrufen.

Zweitens versuchen Me.FormClosing mit MyBase.FormClosing ersetzen ... Wie so:

Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing 

Also, stellen Sie sicher, dass Sie nicht zu schließen Ereignis abonnieren zweimal zu bilden, vielleicht addHandler Anweisung.

Hoffe, das würde helfen.

+0

Hallo Azaz ich habe das versucht, aber das gleiche Ergebnis wird zweimal angezeigt –

+0

Oh, ich denke, Sie abonnieren FormClosing-Ereignis zweimal mit zwei Handles-Anweisung. Eine mit Form1_FormClosing-Methode und eine andere mit FrmMainPlatform_FormClosing. Sie müssen FormClosing einmal abonnieren. Mit anderen Worten, verwenden Sie die Handles-Anweisung entweder mit Form1_FormClosing oder FrmMainPlatform_FormClosing. –

+0

Entschuldigung, ich habe zwei Lösungen in unserem Stapelüberlauf gefunden. Ich habe diese Lösung einfach eingefügt. Jetzt hatte ich meinen eigenen Code mit zweiten Optionen geändert. zwei Lösung in der gleichen Form angewendet –

0

UPDATE: Sie können dies versuchen, um alle Formulare zu schließen. Ich würde es in die Hauptform schließen.

For each f as Form in My.Application.OpenForms 
f.Close() 
Next 

Entfernen Sie diesen ersten Codeblock. Dies ist was ich getan habe und es fragte mich ob ich nur einmal schliessen wollte und es schloss wenn ich ja klickte und nicht wenn ich nein sagte.

Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 
Select Case MessageBox.Show("Are you sure you want to exit?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) 
    Case Windows.Forms.DialogResult.Yes 
     'nothing to do here the form is already closing 
    Case Windows.Forms.DialogResult.No 
     e.Cancel = True 'cancel the form closing event 
     'minimize to tray/hide etc here 
    End Select 
End Sub 
+0

Hallo Roach, seine Schließung aktuelle Form nur noch noch Anwendung läuft in Task-Manager –

+0

@karihalanudhayasuriyan, können Sie bitte überprüfen Sie die Startform Ihres Projekts? Worauf ist es eingestellt? –

+0

Enthält Ihr Projekt mehr als ein Formular? – BuddyRoach

Verwandte Themen