【问题标题】:How do i display a form by using a string as the form name [duplicate]如何使用字符串作为表单名称来显示表单[重复]
【发布时间】:2014-10-10 23:15:55
【问题描述】:

用户单击网格中的一行。该行是一个包含表单名称的字符串。我检索字符串并希望现在显示表单。这是我的代码。

    string formToEdit = EditFormsGrid[EditFormsGrid.RowSel, 0].ToString();

        using (var form = ((Form)Activator.CreateInstance()))
        {
            if (form.ShowDialog() == DialogResult.OK)
            {
            }
        }

我如何从字符串 formToEdit 中获得能够打开它所引用的表单

例如。字符串 = "BatchEditForm"

是否还会调用默认构造函数,例如 BatchEditForm()?

【问题讨论】:

    标签: c# windows


    【解决方案1】:

    使用 Type.GetType() 从字符串中获取类型,而不是使用 GetConstructor 获取您想要的构造函数。 (您可以调用默认构造函数,或任何其他构造函数)

    【讨论】:

    • 我试过了,我得到了 null var formType = Type.GetType(formToEdit);
    • 你应该开始字符串,在类型本身之前它所属的命名空间
    【解决方案2】:

    我知道这是一个老问题,但没有公认的答案,我会发布自己的:

    这就是你需要的;

    var form_to_open = (Form)Activator.CreateInstance(Type.GetType("YourNameSpace.YourFormName"));
    form_to_open.Show();
    

    不要忘记,您需要将 YourNameSpace 替换为项目的实际命名空间,并将 YourFormName 替换为表单名称(字符串格式)。

    【讨论】:

      猜你喜欢
      • 2012-06-10
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      相关资源
      最近更新 更多