私は、システムトレイアイコンで実行されている単一のWindowsフォームアプリケーションを持っています。ユーザーがXボタンを押すと、メッセージボックスに「はい」と「いいえ」が表示されます - >フォームを閉じる - いいえ - >システムトレイアイコンでフォームを実行し続ける)。 私は、ユーザーがアプリケーションの別のインスタンスを開いたときに、私はこのコードを使用しているので、実行中のインスタンスが既に存在する場合のシナリオを防ぐために考えていた:Application.Exit()とVb.netのFormClosingイベント
If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length> 1 Then
MessageBox.Show("Another instance is running", "Error Window", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation)
Application.Exit()
End If
問題は、私はこのメッセージをテストしたいとき私はOKを押した後、新しいメッセージボックスが表示されます(プライベートSub Form_FormClosingからのもの)。私がNOを選択した場合、インスタンスを実行する必要があります! 私はそれを読んでApplication.ExitはForm_FormClosingイベントを発生させます。
Form_FormClosingイベントのトリガをキャンセルする可能性はありますか、何か間違っていますか?
「これは
Private Sub Form_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Try
Dim response As MsgBoxResult
response = MsgBox("Are you sure you want to exit", CType(MsgBoxStyle.Question + MsgBoxStyle.YesNo, MsgBoxStyle), "Confirm")
'If the user press Yes the application wil close
'because the application remains in taskmanager after closing i decide to kill the current process
If response = MsgBoxResult.Yes Then
Process.GetCurrentProcess().Kill()
ElseIf response = MsgBoxResult.No Then
e.Cancel = True
Me.WindowState = FormWindowState.Minimized
Me.Hide()
NotifyIcon1.Visible = True
End If
PS formclosing手順です:私はプログラマーないですので、私と一緒に過酷にならないでください:)
答えをありがとう...私はビジュアルスタジオのプロパティから設定が見つかりましたこれはまた、このメソッドを使用するようにしてください。unfortunatelly私はなぜ私のアプリケーションが終了後にタスクマネージャからシャットダウンしていない管理していない...それは私がこの一時的な解決策を見つける理由....それは基本的にアプリケーションは単純なWindowsフォームです。 – Operagust