• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォームの最前面が効かない)

フォームの最前面が効かない

このQ&Aのポイント
  • VB.net 2008で開発、コンパイルされたアプリケーションで、自作フォームを起動する際に最前面に表示されない問題が発生しています。
  • 開発環境はVB.net 2008で、ターゲットCPUはx86を指定し、.NET Framework 2.0を使用しています。OSはWindows 7です。
  • 起動したアプリケーションの自作フォーム(Form1)から別のDLL(FormTest1)を起動する際、初回のみ自作フォームが最前面に表示されず、2回目以降は正しく表示されるという問題が発生しています。解決策をご教授いただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.3

> Dim frm As New FormTest1 をボタンクリックイベント内でなくパブリックにしておいてメイン等で定義し、イベントの中で frm.TopMost = True frm.Show() を行うではどうでしょうか。 Newが完了する前にTopMostが指定されていて最初は間に合わないような気もします。 あるいは frm.Show(Me) ではどうなるでしょうか。

ok-mode
質問者

お礼

>frm.Show(Me) オーナーフォーム指定の場合はたまにうまくいかない時があります。再現性はありません。わけがわかりませんが実際そうなのでなんともトホホです。 >Newが完了する前に・・・ これは初耳ですのでこちらで調べていこうと思います。 ありがとうございました。

その他の回答 (2)

  • hirotn
  • ベストアンサー率59% (147/246)
回答No.2

FormTest1が外部DLLであることが気になっております。おそらくこちらはいじれないと推測して回答する必要があるのでしょうね…。 --- (1)frm.TopMost = True (2)frm.Show() (1)(2)を逆にするとどうなりますか? (2)frm.Show() (1)frm.TopMost = True ---

ok-mode
質問者

補足

ありがとうございます。 そうです「FormTest1」はいじれません。 >(1)(2)を逆にするとどうなりますか? 同じですね。 2回目は正常にうごきます。

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

解決策になるかどうか判りませんが。 FormTest1のLoadに Me.TopMost = true を入れる。 あるいは下記が参考になるかも。 http://dobon.net/vb/dotnet/form/ownedform.html モードレスのフォームが、あるフォームの背後に隠れないようにする

関連するQ&A