日期:2014-05-17  浏览次数:21165 次

动态生成的menu点击菜单名字怎么弹出FORM
动态生成了一个menu
 // 扩展属性可以加任何想要的值。这里用formName属性来加载窗体。
subMenu.Tag = dtcd2.Rows[j]["caidanmingcheng"].ToString();
  //给没有子菜单的菜单项加事件。
 subMenu.Click += new EventHandler(subMenu_Click);
  void subMenu_Click(object sender, EventArgs e)
  {

  string formName = ((ToolStripMenuItem)sender).Tag.ToString();
  Assembly asm = Assembly.Load("WindowsFormsApplication2");//程序集名
  object frmObj = asm.CreateInstance("WindowsFormsApplication2." + formName);
  Form frms = (Form)frmObj;
  frms.Tag = formName.ToString();
  frms.MdiParent = this;
  frms.Show();
  }
这里只能显示WindowsFormsApplication2这个程序集下面的所有FORM,但是不可能把所有的FORM放进一个WindowsFormsApplication2里的啊

是否是方法错了???有没有直接点击动态的菜单,此时只能取到点击选中的TEXT,怎么弹出FORM啊???

------解决方案--------------------
把你其他程序集的form导入到WindowsFormsApplication2,参照追加
你这样写了还是不能从别的程序集中反射form
从别的程序集中反射需要首先加载该文件,然后反射其中的类型。
C# code

  Assembly ass = Assembly.LoadFile(@"C:\testProjects\testApp\testAlgorithm\bin\Debug\testAlgorithm.exe");
            Form form = (Form)ass.CreateInstance("testAlgorithm.Form1");
            form.Show();