• 締切済み

指定した名前のサブフォームがあれば開きたいです。

指定した名前のサブフォームがあれば開きたいです。 現在、vb2005+XPで開発しております。 メインフォームからサブフォーム(予定数100個)を開くイベントで 指定した名前のフォームが あれば開く… なければ違うイベント… そんな感じの開発を行っておりました。 現在は以下のようなソースです。 Dim myPath As String = System.Reflection.Assembly.GetExecutingAssembly().Location Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile(myPath) Dim t As Type = asm.GetType("YoushikiPrint.ClsF_" & PrtNoABC) If t Is Nothing Then 'サブフォーム無の場合 Else 'サブフォーム有の場合 end if やっとの思いでサブフォームが1個完成し 今日…2個目を作り始めました。 ところが… asm.GetType("YoushikiPrint.ClsF_" & PrtNoABC) の所でエラーが出るようになってしまい 1個目のフォームも開かなくなりました。 助けて下さい。 是非ご教示宜しくお願い致します。

みんなの回答

  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.2

asmにアセンブリが入っているのであれば、GetTypes()メソッドで現在存在する型の一覧を確認してはいかがでしょう? あと1つ気になったのですが、System.Reflection.Assembly.GetExecutingAssembly()メソッドと変数asmは、同一アセンブリを指している事になると思いますが、LoadFile()メソッドは特殊な用途で使用されるとあります。何か目的があってLoadFile()メソッドを使用しているのでしょうか?

  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.1

気が動転しているのかもしれませんが、肝心のエラー内容を提示してくれないと誰にも回答ができないと思います。 思い当たりそうなのは、変数asmがNothingになってしまっているとか、名前空間名が間違ってるとか・・・

gen_trp
質問者

お礼

言葉足らずで申し訳ございません。 Dim myPath As String = System.Reflection.Assembly.GetExecutingAssembly().Location Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile(myPath) Dim t As Type = asm.GetType("YoushikiPrint.ClsF_" & PrtNoABC) 確認した所2行目の変数asmには バッチリ指定したコンパイル中のexeのアセンブリが表示されております。 エラーになっているのは変数tが nothingを返しエラーになっている状況です。 変数prtNOABCは事前のロジックで prtNOABC=100 となっていますので Dim t As Type = asm.GetType("YoushikiPrint.ClsF_100")となります。 今、制作中のソフト内には Cls_YoushikiPrint、ClsF_100、ClsF_110、ClsF_120 というフォームが用意されており Cls_YoushikiPrintというフォームに配置してあるボタンを押した際 Dim myPath As String = System.Reflection.Assembly.GetExecutingAssembly().Location Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile(myPath) Dim t As Type = asm.GetType("YoushikiPrint.ClsF_" & PrtNoABC) が動き変数tにフォームがあった場合は 値を返したいのでございます。 皆様…ご教示宜しくお願い致します。

関連するQ&A