C# 通過反射例項化窗體(窗體不固定或窗體數量多)
阿新 • • 發佈:2018-12-12
private void button_Click(object sender, EventArgs e) { //通過按鈕名稱開啟窗體 string btnName = ((Button)sender).Tag.ToString(); string name = Assembly.GetExecutingAssembly().GetName().Name; //獲取當前程式集名稱 CreateForm(MethodBase.GetCurrentMethod().DeclaringType.Namespace + "." + btnName, name); //CreateForm(this.GetType().Namespace + "." + btnName, name); //StackTrace st = new StackTrace(true); //MethodBase mb = st.GetFrame(1).GetMethod(); //Console.WriteLine(mb.DeclaringType.Namespace.ToString()); //Type[] type = Assembly.GetExecutingAssembly().GetTypes(); //獲取當前所有程式集名稱 //Console.WriteLine(name); //Console.WriteLine(MethodBase.GetCurrentMethod().DeclaringType.Namespace.ToString()); } /// <summary> /// 通過反射例項化窗體 /// </summary> /// <param name="AssemblyName">根程式集名稱</param> /// <param name="CurrentAssemblyName">當前要建立的窗體程式集名稱</param> public void CreateForm(string CurrentAssemblyName, string AssemblyName) { Form frm = (Form)Assembly.Load(AssemblyName).CreateInstance(CurrentAssemblyName); frm.Show(); }