none
利用表單名稱來New表單 RRS feed

  • 問題

  • 我已經參考過幾篇文章:

    http://social.msdn.microsoft.com/Forums/zh-TW/230/thread/6166ab1b-7061-42a9-8525-6cd2f9b89eed

    但是實作後還是有點問體。

    我的程式有不同的地方是,我在A專案中加入參考B.dll

    現在有個按鈕,想要開起B.dll中的些表單,程式碼如下

    frm.Show()時,會出錯:並未將物件參考設定為物件的執行個體。
    但是我用Assembly取組件名稱有B,不知該如何修改?

      Dim btn As Button = CType(sender, Button)
      Dim str As String = "B." & btn.Tag
      Dim frm As Form = CType(Assembly.GetExecutingAssembly.CreateInstance(str), Form)
      frm.Show()
    

    2010年7月13日 下午 01:20

解答

  • Assembly.GetAssembly取代Assembly.GetExecutingAssembly
    • 已標示為解答 小見光二 2010年7月18日 下午 02:24
    2010年7月13日 下午 01:40
  • Hi,

     

    Assembly.GetExecutingAssembly是取得目前運行的組件
    您的例子中應為A專案
    但是類別是在B.dll
    您要取得的是B.dll的Assembly
    照阿尼大的提示修改就可以了

     


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 小見光二 2010年7月18日 下午 02:23
    2010年7月13日 下午 02:07
  • 還是不太懂GetType的用法,我用了"組件名稱.類別名稱",但是還是出現Null錯誤訊息。

    但後來使用

    Assembly.LoadFrom(組件名稱 & ".dll").CreateInstance(組件名稱 & "." & 類別名稱)

    可以運作了。

     

    所以大大所提供的方法先前不能用,會不會是沒有載入(可是我有用介面方式將.dll加入)??

    • 已標示為解答 小見光二 2010年7月18日 下午 02:23
    2010年7月14日 上午 09:17

所有回覆

  • Assembly.GetAssembly取代Assembly.GetExecutingAssembly
    • 已標示為解答 小見光二 2010年7月18日 下午 02:24
    2010年7月13日 下午 01:40
  • Hi,

     

    Assembly.GetExecutingAssembly是取得目前運行的組件
    您的例子中應為A專案
    但是類別是在B.dll
    您要取得的是B.dll的Assembly
    照阿尼大的提示修改就可以了

     


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 小見光二 2010年7月18日 下午 02:23
    2010年7月13日 下午 02:07
  • Assembly. GetAssembly(Type)

    抱歉我不知道該如何放入餐數Type,是否可以給我個範例,謝謝大大.

    2010年7月13日 下午 08:34
  • 用Type.GetType()
    2010年7月14日 上午 01:39
  • Hi,

    可考慮試用看看

    Activator.CreateInstance 

    http://msdn.microsoft.com/zh-tw/library/wccyzw83(v=VS.80).aspx


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2010年7月14日 上午 04:18
  • 還是不太懂GetType的用法,我用了"組件名稱.類別名稱",但是還是出現Null錯誤訊息。

    但後來使用

    Assembly.LoadFrom(組件名稱 & ".dll").CreateInstance(組件名稱 & "." & 類別名稱)

    可以運作了。

     

    所以大大所提供的方法先前不能用,會不會是沒有載入(可是我有用介面方式將.dll加入)??

    • 已標示為解答 小見光二 2010年7月18日 下午 02:23
    2010年7月14日 上午 09:17