Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串(Formname)转换为System.window.form_C#_Winforms - Fatal编程技术网

C# 将字符串(Formname)转换为System.window.form

C# 将字符串(Formname)转换为System.window.form,c#,winforms,C#,Winforms,我在一个C#windows项目中工作。所有菜单项都存储在一个SQL表中,其中有Title、FormName和DLLName列 单击菜单项时,我将获取相应的FormName和DLLName。 现在我需要将这个字符串(DLLName&FormName)转换到窗口窗体并显示它 你能帮我把这个字符串转换成窗口格式吗 提前感谢您需要使用反射 假设您有一个ClassLibrary1.dll,其中包含Form1的定义。我刚刚测试了这段代码及其工作原理: using System.Reflection; pr

我在一个C#windows项目中工作。所有菜单项都存储在一个SQL表中,其中有Title、FormName和DLLName列

单击菜单项时,我将获取相应的FormName和DLLName。 现在我需要将这个字符串(DLLName&FormName)转换到窗口窗体并显示它

你能帮我把这个字符串转换成窗口格式吗


提前感谢

您需要使用反射

假设您有一个ClassLibrary1.dll,其中包含Form1的定义。我刚刚测试了这段代码及其工作原理:

using System.Reflection;

private void LoadNewForm(string formName)
{
    try
    {
        Assembly assembly = Assembly.LoadFile("c:\\ClassLibrary1.dll");
        Type type = assembly.GetType(formName);
        Form frm = (Form) Activator.CreateInstance(type);

        frm.Show();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}

private void button1_Click(object sender, EventArgs e)
{
    LoadNewForm("ClassLibrary1.Form1");
}

我想这可能会帮助你:

string s = DLLName + FormName;
Type myClassType = Type.GetType(s);
Form form = (Form)Activator.CreateInstance(typeof(myClassType))

让我检查一下是否正确:您有一些DLL,其中包含从
表单继承的自定义类。您想在运行时从DLL加载该类型,然后使用指定的名称创建该类型的实例并显示该表单吗?