いつもお世話になります。
以前魔界の仮面弁士様に
Dim X as Form1
Set X=Forms.Add("Form1")
という形でFテキストで読んだForm名をFormオブジェクトの形に
変更する方法を教えてもらったのですが、この場合、
Setした時に、Form1のFormLoad処理が走ってしまいます。
SetしたときにFormLoadが走らない方法はないのでしょうか?
他によい方法があるのでしょうか?
いつも申し訳ないのですが、よろしくお願いいたします。
残念ながら、Formsコレクションを使う以上は無理ですね。
Loadされても問題無いようにコーディングを見直すか、もしくは、
Forms.Addせずに、Newでインスタンスを生成するように変更して下さい。
Formsコレクションは、現在ロードされているフォーム数を管理していますので、
「Formsコレクションに追加する」という事は、すなわち、
そのフォームがロードされた状態になっていなければならないわけです。
例えば、『Set F = New Form2』を実行しただけの時には、Form2では
Initializeイベントは発生するが、Loadイベントは起きない状態です。
この場合、Forms.Countの値は変化しません。
(その後で『Load F』を実行すると、Forms.Countが増加します)
魔界の仮面弁士 様
いつもありがとうございます。
今回はVBの中にFormを取り込んでありますので、
Select Case文である引数にsetで引き渡すことにしました。
これからもよろしくお願いいたします。
ツイート | ![]() |