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

Form_Loadイベント

環境/言語:[Windows2000、XP]
分類:[.NET]

kageです。お世話になります。

VB6で、メインメニューのFormからサブメニューのFormを呼び出し、いろんな作業を行いメインメニューに戻り、他のサブメニューFormを呼び出すというアプリをいろいろ作っていました。
サブメニューで行った作業をDataファイルに書き出し、メインメニューに戻ったところでForm_LoadイベントでDataファイルを読んで作業状態をメインメニューに反映させるというやり方です。
現在、これらのプログラムをVB.NETに勉強をかねて、変換を行っています。

前置きが長くなりました。
悩んでいるのは、メインメニューに戻ったとき、Form_Loadイベントが起きないのです。

'VB6のコード(Form1)
Private Sub Command1_Click()
Unload Form1
Form2.Show
End Sub
Private Sub Form_Load()
MsgBox "Form1がLoadされました"
End Sub
'同じくForm2
Private Sub Command1_Click()
Unload Form2
Form1.Show
End Sub

これをVB.NETに変換すると、Form1を閉じた時点でプログラムが終わってしまいますので
Form1.DefInstance.Close() を Form1.DefInstance.Hide() に変えています。
(もともとVB6でも、Form1.Hide にすると、Form_Loadイベントは起きませんが)

何かいい方法がありましたらよろしくお願いいたします。
(もともとVB6でも、Form1.Hide にすると、Form_Loadイベントは起きませんが)

じゃ、Form_Activateイベントで記述してみるとどうでしょ?
いなさん、お世話になります。

> じゃ、Form_Activateイベントで記述してみるとどうでしょ?

VB6では、Form.VisibleをFalseからTrue(その逆も)時のイベントは何も起きません。
苦し紛れにForm_MouseMoveを使ったりしたこともあります。

ただ、DOBONさんのHPの
http://dobon.net/vb/dotnet/form/showform.html
で、Form2をモードレスフォームとして表示するで書かれている

'Form2クラスのインスタンスを作成する
Dim f As New Form2()
'Form2を表示する
'ここではモードレスフォームとして表示する
f.Show()
Form1.Hide()

'Form2
Dim f as New Form1()
f.Show()
Form2.Close()

とすると、ちゃんとForm1_Loadイベントが起きます。
それじゃ、とVB6からアップグレードしたCodeを書き換えようとしたのですが、問題はサブフォームが20近くもあり
Dim f as New Form2
のところで引っかかってしまいました。
一度に書けばよかったのですが、長くなりすぎるもので・・・

よろしくお願いします。  kage
■No3625に返信(kageさんの記事)

        Dim f As Form
        Select Case hogehoge
            Case 0 : f = New Form2
            Case 1 : f = New Form3
        End Select
        f.Show()
        Me.Close()

じゃだめ?
  • 題名: Re[4]: Form_Loadイベント
  • 著者: kage
  • 日時: 2004/04/13 16:42:15
  • ID: 3639
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
どらごらさん、お世話になります。

> Dim f As Form
> Select Case hogehoge
> Case 0 : f = New Form2
> Case 1 : f = New Form3
> End Select
> f.Show()
> Me.Close()

これでバッチリでした。メインフォームに戻るたびにForm_Loadイベントが起こります。
ありがとうございました。  kage
解決済み!

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