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

2つのフォームの表示

環境/言語:[[環境 2K 言語 VB.net .Net Framework 2003]
分類:[.NET]

VB6の時は、モードレスフォームを表示し、
その後にモーダルフォームを表示すれば
両方のフォームを操作できる状態ができたと思います。
今回、Sub Mainから開始して、この状態を作りたいと考えています。

そこで以下の様なソースを書いたところ。。

Public Sub main()
Dim fMain As New frmMain
Dim fSub As New frmSub

fSub.Show()
fMain.ShowDialog()
fSub.Close()
End Sub

2つのフォーム自体は表示されるのですが、
fSubのフォームを操作することが出来ません。

実現するにはどのように修正すれば良いのでしょうか?
ご教授よろしくお願いします。
2004/01/16(Fri) 20:34:27 編集(投稿者)

> VB6の時は、モードレスフォームを表示し、
> その後にモーダルフォームを表示すれば
> 両方のフォームを操作できる状態ができたと思います。

そんなことはVB6でもできないはずですが・・・。
モーダルフォームを表示すれば、
同アプリの他のフォームを一切触れませんから。

ひょっとして、
Form1からForm2を表示するとして、
Form2.Show vbModeless, Me
としたときの挙動のことをおっしゃってます?

この場合、Form2は常にForm1より前に表示されますが、
どちらもモーダレスなフォームです。

そういうことなら、

> Public Sub main()
> Dim fMain As New frmMain
> Dim fSub As New frmSub

下記、3行を
> fSub.Show()
> fMain.ShowDialog()
> fSub.Close()

fMain.Show()
fSub.Owner = fMain
fSub.Show()
Application.Run(fMain)

のようにするとよいでしょう。
■No2171に返信(よねKENさんの記事)
> fSub.Show()
> fMain.ShowDialog()
> fSub.Close()
> End Sub
>
> 2つのフォーム自体は表示されるのですが、
> fSubのフォームを操作することが出来ません。

このことは私の次のページの下のほうで触れている問題と同じだと思います。

・.NET Tips - アプリケーション開始時のフォームを非表示にする
http://dobon.net/vb/dotnet/form/notopenform.html

つまり、よねKENさんも書いているように、ShowDialogではなくApplication.Runでメインフォームを表示すればfSubも操作できるでしょう。

Public Sub main()
Dim fMain As New frmMain
Dim fSub As New frmSub

fSub.Show()
Application.Run(fMain)
End Sub
よねKENさん、管理人さん、回答ありがとうございました。

教えて頂いた Application.Run(fMain)
にすることにより、無事解決しました。
ありがとうございました!
解決済み!

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