Form2からForm1.Show
投稿者 mitchin  (社会人)
投稿日時
2009/6/30 05:08:34
Form1 は既に Load されているので実行されないでしょう。
Form_Load 内の記述をメソッド化して、Form1 の Visible が True になったらそのメソッドを呼び出すようにしてみてはいかがですか?
VB6 を使ったことがないので判りませんが、VisibleChanged イベントがあれば できると思います。
Form_Load 内の記述をメソッド化して、Form1 の Visible が True になったらそのメソッドを呼び出すようにしてみてはいかがですか?
VB6 を使ったことがないので判りませんが、VisibleChanged イベントがあれば できると思います。
投稿者 neptune  (社会人)
投稿日時
2009/6/30 06:53:18
どういう処理を目的としているかキチンと説明した方が
アドバイスをもらい易いですよ。
現状どうやっているかも書いた方が良いですね。
form2を表示後form1をどう処理しているかもわからないし、そもそもどうやってform1を
表示させているかでも変わると思うし。
アドバイスをもらい易いですよ。
現状どうやっているかも書いた方が良いですね。
form2を表示後form1をどう処理しているかもわからないし、そもそもどうやってform1を
表示させているかでも変わると思うし。
投稿者 nakaP  (社会人)
投稿日時
2009/6/30 21:49:09
幾つかの疑問は、「VB6 規定のインスタンス」で検索すると解決するかと思います。
投稿者 るきお  (社会人)
投稿日時
2009/6/30 22:08:05
たしかに、
>form2を表示後form1をどう処理しているかもわからないし、そもそもどうやってform1を
>表示させているかでも変わると思うし。
このあたりの構造次第で対応方法も変わってきますが、
サンプルとしてForm1とForm2を交互に呼び出しあいLoadイベントも発生する例を紹介します。
Form1とForm2にそれぞれCommand1を貼り付けて試してください。
↓Form1側
↓Form2側
mitchinさんご指摘の繰り返しになりますが、
>Form1 は既に Load されているので実行されないでしょう。
そもそもLoadイベントは最初にそのフォームが作り出されたときに発生するので、その後一時的に非表示になったのを再表示した程度では再実行されません。
Unloadまでして破棄してから、再度表示すると発生します。
Unloadまでしたくないが、何度もLoadイベントを発生させたいということは基本的にはできません。
その都度発生させたいのであればActivateなど他のイベントの使用を検討します。
ちょうどいいタイミングのイベントがない場合は自分で作りこみをします。
これは単にPublicな関数を1つ用意してそれをその都度呼び出せば済むレベルの場合もありますし、フラグなので状況を把握しておいてイベントごとに対応を変えたりする複雑な制御が必要になる場合もあります。
要はケースバイケースです。
というわけで結局結論は、neptuneさんと同じで、
>どういう処理を目的としているかキチンと説明した方が
>アドバイスをもらい易いですよ。
>現状どうやっているかも書いた方が良いですね。
ということになってしまいます。
>form2を表示後form1をどう処理しているかもわからないし、そもそもどうやってform1を
>表示させているかでも変わると思うし。
このあたりの構造次第で対応方法も変わってきますが、
サンプルとしてForm1とForm2を交互に呼び出しあいLoadイベントも発生する例を紹介します。
Form1とForm2にそれぞれCommand1を貼り付けて試してください。
↓Form1側
Private Sub Form_Load()
MsgBox "Form1"
End Sub
Private Sub Command1_Click()
Form2.Show
Unload Me
End Sub
↓Form2側
Private Sub Form_Load()
MsgBox "Form2"
End Sub
Private Sub Command1_Click()
Form1.Show
Unload Me
End Sub
mitchinさんご指摘の繰り返しになりますが、
>Form1 は既に Load されているので実行されないでしょう。
そもそもLoadイベントは最初にそのフォームが作り出されたときに発生するので、その後一時的に非表示になったのを再表示した程度では再実行されません。
Unloadまでして破棄してから、再度表示すると発生します。
Unloadまでしたくないが、何度もLoadイベントを発生させたいということは基本的にはできません。
その都度発生させたいのであればActivateなど他のイベントの使用を検討します。
ちょうどいいタイミングのイベントがない場合は自分で作りこみをします。
これは単にPublicな関数を1つ用意してそれをその都度呼び出せば済むレベルの場合もありますし、フラグなので状況を把握しておいてイベントごとに対応を変えたりする複雑な制御が必要になる場合もあります。
要はケースバイケースです。
というわけで結局結論は、neptuneさんと同じで、
>どういう処理を目的としているかキチンと説明した方が
>アドバイスをもらい易いですよ。
>現状どうやっているかも書いた方が良いですね。
ということになってしまいます。
どういうプログラムを書けばForm1.ShowでForm1に戻ってきたときにForm_Load()の処理が行われるようになりますか?