DOBON.NET DOBON.NETプログラミング掲示板過去ログ

メッセージボックスがフォームの後ろに隠れてしまう現象について

環境/言語:[VB.NET 2008]
分類:[.NET]

画面A(メイン画面)から、ある処理ボタンを押したとき、

@処理実行中は「しばらくお待ち下さい。」の画面B(待機画面)を表示
A処理が終わったときに処理終了のメッセージボックスを表示

としているのですが、@の待機画面が表示されてる際に、メイン画面をクリックする等、メイン画面にフォーカスをやってしまうと、Aのメッセージボックスがメイン画面の後ろに隠れてしまいます。

この現象の原因、及び対処法をご教授願えませんでしょうか。


以下にコードを示します。

Dim WaitForm As New FormA
WaitForm.Show()

'ここで時間のかかる処理を行う

WaitForm.Close()
WaitForm = Nothing

Call MsgBox("処理が終了しました。")
■No23590に返信(はてなさんの記事)
>Aのメッセージボックスがメイン画面の後ろに隠れてしまいます。


Dim WaitForm As New FormA
WaitForm.Show()

WaitForm.Show(Me)

としてみたらいかがでしょう?
早速のご回答ありがとうございます。

以下でも試してみたのですが、NGでした。

> WaitForm.Show()
> ↓
> WaitForm.Show(Me)
IWin32Window を引数に持つ System.Windows.Forms.MessageBox.Show メソッドのオーバーロードを使ってみてはいかがでしょうか。
■No23592に返信(はてなさんの記事)
> 早速のご回答ありがとうございます。
>
> 以下でも試してみたのですが、NGでした。
>
>>WaitForm.Show()
>>↓
>>WaitForm.Show(Me)
>

本当ですか?
試しにやってみましたけど、メインフォームをクリックしても
前画面に表示されたままでしたけどね。
もちろん、メインフォーム以外では隠れてしいまいますけど。
■No23595に返信(じゃんぬねっとさんの記事)
> IWin32Window を引数に持つ System.Windows.Forms.MessageBox.Show メソッドのオーバーロードを使ってみてはいかがでしょうか。

MessageBox.Show(Me,"処理が終了しました。")

としたところうまくいきました。
じゃんぬねっと様、有難うございました。


やじゅ様

こちらで試したところ、短時間(2〜3秒程度)では、
メインフォームをクリックしても問題ないのですが、
20秒程度の場合だと、この現象が起こりました。
原因はいまいち不明ですが、とりあえず解決とさして頂きます。
有難うございました。
解決済み!
私、勘違いしてました。
フォームじゃなくて、その後のメッセージボックスなんですね。
タイトルにも書いてあるのに、ちゃんと、質問を読まないと駄目ですね。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板