ドキュメントからMessageBox
クラスへ:
メッセージ ボックスには常にオーナー ウィンドウがあります。既定では、メッセージ ボックスの所有者は、メッセージ ボックスが開かれた時点でアプリケーションで現在アクティブなウィンドウです。Window
ただし、複数のオーバーロードのいずれかを使用して、の別の所有者を指定できますShow
。オーナー ウィンドウの詳細については、 を参照してくださいWindow.Owner
。
したがって、あなたの問題は、メッセージボックスがユーザーによって閉じられる前にアプリケーションが存在するこの質問に非常に似ています。
最初に試すことは、パラメーターnull
として渡すことです。Window
MessageBox.Show(null, ex.Message, "Error", MessageBoxButton.OK);
メインウィンドウオブジェクトなど、クラスのインスタンスがある場合は、Window
代わりにそれを渡しますnull
。
MessageBox.Show(mainWindow, ex.Message, "Error", MessageBoxButton.OK);
現在メイン ウィンドウ メソッドのいずれかを使用している場合はthis
、Window として渡すことができます。
MessageBox.Show(this, ex.Message, "Error", MessageBoxButton.OK);
null
現時点で使用可能なメイン ウィンドウ オブジェクトがない場合にのみ使用します。
MessageBox サンプルを見てください。this
がオーナー ウィンドウとして渡される場合と渡される場合の違いを確認できるはずですnull
。