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代码
...全文
186 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
daigua1987 2021-05-05
  • 打赏
  • 举报
回复
谢谢 自己解决了 把 this.Cursor = Cursors.WaitCursor; 这段删除后就可以获取到了
morliz子轩 2021-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("命名空间.类") 要先获取当前程序集,再进行实例化。

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧