2016-09-27 12 views
0

アプリケーションを終了する前に確認を実行するか、ログアウトボタンをクリックしてアプリケーションをログアウトするか、をクリックしてアプリケーションを閉じます。アプリケーションを直接閉じると、メッセージボックスが一度表示されます。しかし、ログアウトボタンを使用すると、メッセージボックスが2回表示されます。ログアウトボタンをクリックすると、ログアウトメッセージボックスが2回表示されます

ので、コーディングは基本的に次のようになりさ:

Private Sub btnLogOut_Click(sender As Object, e As EventArgs) Handles btnLogOut.Click 
    If logOut() Then 
     Me.Dispose() 
     frmLogIn.Show() 
    End If 
End Sub 

Private Sub frmHome_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing 
    If logOut() Then 
     Me.Dispose() 
     frmLogIn.Show() 
    Else 
     e.Cancel = True 
    End If 
End Sub 

Public Function logOut() As Boolean 
    Dim respond = MessageBox.Show("Are you sure you want to log out?", "Log Out", MessageBoxButtons.YesNo, MessageBoxIcon.Question) 
    If respond = DialogResult.Yes Then 
     blnResult = True 
    Else 
     blnResult = False 
    End If 
    logOut = blnResult 
End Function 

だから、誰が助けることができますか? Me.Disposeであるあなたの2行目//四行目

は、あなたが他の用語では、あなたがそれを閉じて、フォームを配置する場合は、あなたのログアウトボタンイベントで

+3

明示的に尋ねるボタンをクリックすると、フォームが閉じるときに再度尋ねられます。メッセージボックスを取り除く - 基本的には、クリックしたボタンをクリックするのかどうかを尋ねています。その厄介な – Plutonix

+2

あなたの問題は、Clickイベント内のMe.Disposeの呼び出しによって発生します。この呼び出しの結果、FormClosingイベントハンドラが呼び出され、再度ログアウトを確認するように求められます。ボタンのコードをクリックして削除し、Me.Closeに置き換えてください。しかし、私は@Plutonixに本当に同意します。あなたがフォームを閉じるとユーザーが緩む未保存のデータがない限り、ちょうど行われた選択を確認しないように頼んでください。 – Steve

+0

@Plutonixログアウトボタンまたは "x"閉じるアイコンをクリックして終了するようにしたいのですがアプリケーションの右上に表示されます。しかし、メッセージボックスを出す前に、メッセージボックスを出す必要があります。 –

答えて

0

If logOut() Then //first line 
    Me.Dispose()//second line 
    frmLogIn.Show()//third line 

終了をクリックします。したがって、あなたのフォームを破棄するため、あなたのform_closeイベントがトリガーになります。メッセージボックスが2回ポップアップするのはこのためです。

+0

ok。わかりました。 –

関連する問題