3

MDI アプリケーションがあります。MessageBox.Show() を使用してメッセージ ボックスを表示すると、メッセージ ボックスを閉じると、開いているすべてのウィンドウの背後にアプリケーション全体が表示されなくなります。

コードは特別なことをしていません。実際、MDI 子フォーム内からメッセージ ボックスを呼び出す行は次のとおりです。

MessageBox.Show(String.Format("{0} saved successfully.", Me.BusinessUnitTypeName), "Save Successful", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)

Me.BusinessUnitTypeName() は、メンバー変数の値に応じて文字列を返す読み取り専用のプロパティ ゲッターです。このプロパティには副作用はありません。

何か案は?

4

3 に答える 3

5

最後のパラメーター を削除しますMessageBoxOptions.DefaultDesktopOnly

MSDNから:

DefaultDesktopOnly は、MessageBox を発生させたアプリケーションがフォーカスを失う原因となります。表示される MessageBox はビジュアル スタイルを使用しません。詳細については、「ビジュアル スタイルを使用したコントロールのレンダリング」を参照してください。

最後のパラメーターは、csrss.exe を使用して、バックグラウンドの Windows サービスとアクティブなデスクトップとの通信を可能にします! 詳細については、Bart de Smet のブログ投稿を参照してください。

于 2008-10-01T02:48:17.617 に答える
2

パラメータを削除するMessageBoxOptions.DefaultDesktopOnlyと、正しく機能します。

DefaultDesktopOnly「メッセージボックスをアクティブなデスクトップに表示する」ことを指定すると、フォーカスが失われます。

于 2008-10-01T02:48:09.940 に答える