アプリケーションを終了する前に確認を実行するか、ログアウトボタンをクリックしてアプリケーションをログアウトするか、をクリックしてアプリケーションを閉じます。アプリケーションを直接閉じると、メッセージボックスが一度表示されます。しかし、ログアウトボタンを使用すると、メッセージボックスが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行目//四行目
は、あなたが他の用語では、あなたがそれを閉じて、フォームを配置する場合は、あなたのログアウトボタンイベントで
明示的に尋ねるボタンをクリックすると、フォームが閉じるときに再度尋ねられます。メッセージボックスを取り除く - 基本的には、クリックしたボタンをクリックするのかどうかを尋ねています。その厄介な – Plutonix
あなたの問題は、Clickイベント内のMe.Disposeの呼び出しによって発生します。この呼び出しの結果、FormClosingイベントハンドラが呼び出され、再度ログアウトを確認するように求められます。ボタンのコードをクリックして削除し、Me.Closeに置き換えてください。しかし、私は@Plutonixに本当に同意します。あなたがフォームを閉じるとユーザーが緩む未保存のデータがない限り、ちょうど行われた選択を確認しないように頼んでください。 – Steve
@Plutonixログアウトボタンまたは "x"閉じるアイコンをクリックして終了するようにしたいのですがアプリケーションの右上に表示されます。しかし、メッセージボックスを出す前に、メッセージボックスを出す必要があります。 –