none
以變數值開啟WINFORM RRS feed

  • 問題

  • 各位同好大家好:

    因工作關係需使用變數開啟WINFORM, 我使用下列方式但發生下列錯誤:

    這個物件沒有定義無參數的建構函式。

    程式如下:

                string asdf = "Form1";
                Type CAType = Type.GetType("namespace." + asdf);
                Form nextForm2 = (Form)Activator.CreateInstance(CAType);
                nextForm2.ShowDialog();

    請問各位是否那裡有問題, 謝謝 !!

    2012年12月13日 下午 12:50

解答

  • 錯誤訊息不是寫的很清楚了嗎?

    這個物件沒有定義無參數的建構函式。


    學習不是查個 Google 套個書上的範例就算了,而是去熟悉了解每個程式碼背後的意義,否則就算學個幾百年,它也不會是你的。

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2012年12月13日 下午 01:04
    版主

所有回覆

  • 錯誤訊息不是寫的很清楚了嗎?

    這個物件沒有定義無參數的建構函式。


    學習不是查個 Google 套個書上的範例就算了,而是去熟悉了解每個程式碼背後的意義,否則就算學個幾百年,它也不會是你的。

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2012年12月13日 下午 01:04
    版主
  • namespace.Form1是什麼?
    2012年12月13日 下午 02:57
  • 請將namespace改成專案名稱再試看看
    2012年12月14日 上午 11:18
  • 試過專案名稱, CAType會變成 NULL
    2012年12月14日 下午 08:20
  • 您好,
    您要試一下使用System.Reflection.Assembly.LoadFile嗎? DLL or Exe 都可以!

    string fullPath = System.IO.Path.GetFullPath(@".\WindowsFormsApplication2.DLL");
    System.Reflection.Assembly myApp2 = System.Reflection.Assembly.LoadFile(fullPath);
    Type myFormType = myApp2.GetType("WindowsFormsApplication2.Form1");
    Form nextForm2 = (Form)Activator.CreateInstance(myFormType);
    nextForm2.ShowDialog();


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    • 已編輯 亂馬客 2012年12月15日 下午 03:23
    2012年12月15日 下午 03:22
  • 老實說, 看這問題的問法, 給了程式碼有什麼意義 ? 根本上發問者連 NameSpace 是什麼都還搞不清楚.

    給發問者一個建議, 在你要玩 Reflection 這麼麻煩的東西之前, 應該要先搞懂 組件, 命名空間, 類別, 執行個體, 有什麼不同.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年12月17日 上午 03:59
    版主
  • 感謝各位已解決, 是我的FORM1中使用了參數, 只要利用Array將參數傳入即可 (Form)Activator.CreateInstance(CAType, objArray)
    2012年12月18日 上午 04:03