Top / .NET備忘録 / 07.Form / 03.Show メソッド

ぶっちゃけた話、無理

VB6.0 と同様の動きをさせようとすると、他の部分に頼らざらるを得ません。

どこかで Application.Run() を実行しなければならないのですが、実行してしまうと、そこで処理が止まります。

VB6.0 の場合は、ユーザーが作ったウインドウのほかに、隠しウインドウが存在し、メッセージループを実行していましたが、VB.NET には存在しません。

似たようなことをしようとすると、Sub Main の最後に、Application.Run() を入れるくらいでしょうか。

 Imports VB6Control.Global
 
 Module Program
     <STAThread()> _
     Sub Main()
         Application.EnableVisualStyles()
         Application.SetCompatibleTextRenderingDefault(False)
         Load(Form1)
         Form1.Show()
         Application.Run()
     End Sub
 End Module

そのうえで、OnFormClosed 中で、OpenForms コレクションがなくなったら、Application.Exit() を実行するようにしておきます。

        protected override void OnFormClosed(FormClosedEventArgs e)
        {
            if (!m_FormClosed) base.OnFormClosed(e);
            if (Application.MessageLoop && Application.OpenForms.Count == 0)
                Application.Exit();
        }

と、考えていたのですが、VB と同様、隠しウインドウを作成したほうが良い気がしてきました。

 Sub Main()
    Dim vbMainForm As New VBMainForm()
          ・
          ・
          ・
    Application.Run(vbMainForm)
 End Sub

すべてのウインドウは、このウインドウの子ウインドウとして表示し、すべてのウインドウがアンロードされたら終了します。




トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2013-03-19 (火) 09:20:40 (1732d)