これをプロジェクトに加えると、ちんけな自前ソフトが、何だか、 いっちょまえ になった気がして、嬉しくなります。
唯、ここで、困った事が。
スタートアップの フォーム から呼び出される 初期設定に係る MessageBox が 隠れるケース があるのです。
う~ん、悩ましいですね。
MessageBox は、ある条件の下、表示される場合がある様に、コーディングしています。
スタートアップの フォーム にです。 SplashScreen にではありません。.
MessageBox.Show("設定作業 開始")
こんな感じに書いていますが、最前部表示 にならないケースが。 うっ、隠れちゃう ... 。
これは、パソコンで実行中の他のプロセス との兼ね合いもあって、最前部に表示したいのですが ... 。
次のコードでも、ケースによっては、他のプロセスが画面を上書きしてしまいます。 Owner を自分 (Me) にして。.
MessageBox.Show(Me, "設定作業 開始")
話が前後しますが、SplashScreen の導入は実に簡単です。
プロジェクトに スプラッシュスクリーン を新規で追加するだけですから。
最も、見た目の構成で、 画像を選んだり、LayoutPanel を弄ったりの作業は必要ですが ... 。
そして、この SplashScreen は、メインスレッドとは別のスレッドで実行されるのだそうです。
さて、困った。
MessageBox を止め、簡単な Form ( や Window ) を追加して、TopMost 指定して表示する手もあるのでしょうが ... 。
他のプロセス との兼ね合い で、最前部とは限りませんし ... 。
第一、面倒ですし ... 。
検索して見ると ... 。 ありました、ありました。 対処法。
MessageBox.Show("message", _
"title", _
MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation, _
MessageBoxDefaultButton.Button1, _
MessageBoxOptions.DefaultDesktopOnly)
6番目の引数が重要です。
MessageBoxOptions.DefaultDesktopOnly によって、最前部に表示されます。
但し、これを指定する為に、前の5つも 指定しなければ いけません。
MessageBoxIcon.Exclamation は、メッセージの内容に合わせ、適宜、変更して下さい。
また、 この指定では、xp visual スタイルを使用しません。
故に、標準のものと少し見た目が異なります。 通常、xp visual スタイル は有効になっています。.
尚、MessageBoxOptions.ServiceNotification と言う もの ( Const ) もあって、
これは、読んで字の如く、Service が通知を必要とする場合に使うんだそうです。
そして、ユーザーがログインしていない状態でも、表示されるんだそうで ... 。 ... 、脱線。
[2015/03/19] MessageBox 記載場所を追記。 一部 語句訂正。
0 件のコメント:
コメントを投稿