VB.NET呼叫專案中子資料夾的Form

小弟在一些網站和論壇中爬文

只知道在同專案中要呼叫另一個設計好的Form的話

可以用

Dim myForm As Form

myForm=CType(Activator.CreateInstance(System.Reflection.Assembly.GetExecutingAssembly.GetType(AssemblyName & "." & FormName)), Form)

不過此用法不能呼叫Assembly中子資料夾中的Form

因公司需要而學習,VB.NET初學者懇請大大們指導

已更新項目:

會這樣做是因為Form1視窗還會再呼叫子視窗

然而Form1視窗是主系統其中一個附屬系統,附屬系統下還有各個不同作用的子表單,想要分開存放避免全部放在一起混淆

主系統跟附屬系統放在Assembly內,子表單放在Assembly再創的資料夾裡

不過我試不出用何種屬性或方法去抓取...

由於是公司裡的MIS系統,我是沿前輩寫的舊系統用的方式去改寫的

VB6.0轉VB.NET很多方法不怎麼適用

TO昆昆大,這樣是2個Form都放在Assembly資料夾中,我清楚這個方式,我需要的是抓取Assembly中的子資料夾

還是非常謝謝昆昆大熱心的為我解答!

2 個已更新項目:

TO dream大 非常謝謝dream大提供的方法,我會嘗試看看

4 個解答

評分
  • 8 年前
    最佳解答

    這樣的作法的確小題大作, 不過因為不瞭解你的需求, 所以針對你的問題來回答

    你可以巡覽所有 type, 這方法即便你建立資料夾來存放表單也將被巡覽

    Dim theForm As Form

    For Each oType As Type In System.Reflection.Assembly.GetExecutingAssembly.GetTypes()

    ' 可以利用 oType.Name 來判斷是不是你要的 Form

    If oType.Name = "Form??" Then

    theForm = CType(Activator.CreateInstance(oType), Form)

    Exit For

    End If

    Next

    以上, 希望對你有幫助

  • 6 年前

    想要賺錢嗎???

    我覺得比基金.股票.黃金.定存 等等 都還要穩

    利息也算OK的網路投資 一次終身 希望你可以來看看

    http://migre.me/iFiHM 我的部落落~~

    +我臉書~ 詳細可以加我好友

    https://www.facebook.com/profile.php?id=1000021987...

    我有專屬臉書社團 還有很多不需要錢就可以賺到 的事業 也歡迎你歐

  • 同一個專案用反射真的是小題大作了些, 用昆昆的寫直接多了.

  • 8 年前

    有禮貌到哪都受人歡迎~

    你的問題滿簡單~不用想的太複雜

    vb.net 的方式

    你有一個資料夾 (Assembly)

    一個Form (Form1) 放置 Assembly資料夾 內

    一個Form (Form2) 放置 Assembly資料夾 內

    你在Form1上執行此程式

    My.Forms.Form2.Show()

    ~~皆大歡喜~~

還有問題?馬上發問,尋求解答。