从动态加载的DLL中显示表单

scr*_*rot 11 c# forms dll

这是我之前在这里提出的问题的扩展.

长话短说,我动态加载DLL并type使用以下代码创建一个:

Assembly assembly = Assembly.LoadFile("C:\\test.dll");
Type type = assembly.GetType("test.dllTest");
Activator.CreateInstance(type);
Run Code Online (Sandbox Code Playgroud)

从那里我可以type用来引用dllTest课堂上的任何东西.默认情况下,该类在运行时应该显示一个表单(在这种情况下,相当空白,因此它并不复杂).

我觉得我在这里错过了一个关键的代码行,这样可以防止表单在屏幕上加载.

dllTest.cs (在DLL中)包括:

namespace test
{
    public partial class dllTest : Form
    {
        public dllTest()
        {
            InitializeComponent();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

InitializeComponent() 设置表单的布局,这个太长了,不能粘贴在这里,不应该有所作为.

有任何想法吗?

Jua*_*nma 14

您必须对刚刚创建的表单执行某些操作:

Assembly assembly = Assembly.LoadFile("C:\\test.dll");
Type type = assembly.GetType("test.dllTest");
Form form = (Form)Activator.CreateInstance(type);
form.ShowDialog(); // Or Application.Run(form)
Run Code Online (Sandbox Code Playgroud)