Form fm = (Form)Assembly.Load(path).CreateInstance(name)获取Form是null

daigua1987 2021-05-05 08:56:13
private void Item_Click(object sender, EventArgs e)
{
ToolStripMenuItem item = sender as ToolStripMenuItem;
this.Cursor = Cursors.WaitCursor;
string path = "FastERP";//项目的Assembly选项名称
string name = "FastERP.IU.UUnit"; //类的名字
Form fm = (Form)Assembly.Load(path).CreateInstance(name);
fm.MdiParent = this.ParentForm;
//panel3.Controls.Add(fm);
fm.Show();
fm.Dock = DockStyle.Fill;
this.Cursor = Cursors.Default;
}

获取代码
namespace FastERP.UI
{
public partial class UUnit : Form
{
public UUnit()
{
InitializeComponent();
}
}
}

UUnit的form代码
...全文
45 点赞 收藏 2
写回复
2 条回复
daigua1987 05月05日
谢谢 自己解决了 把 this.Cursor = Cursors.WaitCursor; 这段删除后就可以获取到了
回复 点赞
morliz子轩 05月05日

string path = "FastERP";//项目的Assembly选项名称
string name = ".UUnit"; //类的名字

//实际上它就是:
string frm Path = Assembly.GetExecutingAssembly().GetName().Name + ".UUnit";

//获取当前程序集
Assembly assembly = Assembly.GetExecutingAssembly();
Type objType = assembly.GetType(frmPath);

if (objType != null)
Form frm = (Form)Activator.CreateInstance(objType);

//最后再加载到mainForm
……
很明显,用法错了。 Assembly.Load("程序集名称").CreateInstance("命名空间.类") 要先获取当前程序集,再进行实例化。
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告