Hallo,
hab folgendes (altes) Problem.
Form2 wird über .ShowDialog von Form1 aufgerufen. Der User hat in Form2 die Möglichkeit das Programm zu beenden (klick auf "X" des Fensters), daraufhin wird Form2_FormClosing abgefangen und CloseReason (UserClosing) entschieden was passiert. Falls es UserClosing ist, erscheint ein Dialog, ob wirklich beendet werden soll.
Desweiteren gibt es die Möglichkeit über einen Button "Zurück" zurück zur Form1 zu kommen. Hierbei wird Form2.Hide() aufgerufen, sodass der Code nach .ShowDialog in Form1 weiterläuft (Form2 wird dort dann geschlossen und freigegeben).
Wenn man nun Form2 öffnet und auf zurück klickt ist die CloseReason nach dem Aufruf von "Me.Hide()" "None". Soweit so gut.
Wenn man in Form2 auf das "X" klickt, erscheint der Dialog "Wirklich beenden?", da die CloseReason "UserClosing" ist. Soweit so gut.
Klickt man danach aber auf "Zurück", ist die CloseReason nicht "None", sondern auch "UserClosing". D.h. der Dialog erscheint ungewollt, obwohl FormClosing durch Me.Hide() ausgelöst wurde.
Weiß jmd. warum das so ist und was man dagegen machen kann?
Codeausschnitte:
Danke und Grüße!
hab folgendes (altes) Problem.
Form2 wird über .ShowDialog von Form1 aufgerufen. Der User hat in Form2 die Möglichkeit das Programm zu beenden (klick auf "X" des Fensters), daraufhin wird Form2_FormClosing abgefangen und CloseReason (UserClosing) entschieden was passiert. Falls es UserClosing ist, erscheint ein Dialog, ob wirklich beendet werden soll.
Desweiteren gibt es die Möglichkeit über einen Button "Zurück" zurück zur Form1 zu kommen. Hierbei wird Form2.Hide() aufgerufen, sodass der Code nach .ShowDialog in Form1 weiterläuft (Form2 wird dort dann geschlossen und freigegeben).
Wenn man nun Form2 öffnet und auf zurück klickt ist die CloseReason nach dem Aufruf von "Me.Hide()" "None". Soweit so gut.
Wenn man in Form2 auf das "X" klickt, erscheint der Dialog "Wirklich beenden?", da die CloseReason "UserClosing" ist. Soweit so gut.
Klickt man danach aber auf "Zurück", ist die CloseReason nicht "None", sondern auch "UserClosing". D.h. der Dialog erscheint ungewollt, obwohl FormClosing durch Me.Hide() ausgelöst wurde.
Weiß jmd. warum das so ist und was man dagegen machen kann?
Codeausschnitte:
VB.NET-Quellcode
- ' ''''''''''''''''''''''''''''''''' FORM 1
- Public Class Form1
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnForm2.Click
- Dim boolExitProgramm As Boolean = False
- Dim form2 As Form2 = New Form2
- form2.ShowDialog()
- boolExitProgramm = form2.boolExitProgramm
- form2.Dispose()
- form2 = Nothing
- If boolExitProgramm = True Then
- Application.Exit()
- End If
- End Sub
- End Class
- ' ''''''''''''''''''''''''''''''''' FORM 2
- Public Class Form2
- Public boolExitProgramm As Boolean = False
- Private Sub btnZurück_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZurück.Click
- Me.Hide()
- End Sub
- Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
- If e.CloseReason = CloseReason.UserClosing Then
- Dim diaResult As DialogResult = MessageBox.Show("Wirklich Beenden?", "Beenden", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
- If diaResult = Windows.Forms.DialogResult.Yes Then
- e.Cancel = False
- boolExitProgramm = True
- Else
- e.Cancel = True
- boolExitProgramm = False
- End If
- End If
- End Sub
- End Class
Danke und Grüße!