如何传递字符串并将其作为类调用

问题描述

我是 c# 的新手,我正在尝试通过一种方法在 MdiContainer 内动态创建表单,方法是在字符串中传递子表单类名的名称。问题是将该字符串作为类调用

public partial class frmHome : Form
    {
        public frmHome()
        {
            InitializeComponent();
        }

        //Method to show a child form
        public void CreateForm(string formName)
        {
            
            //somehow get the type of the class name passed through formName
            Type protoclass = Type.GetType("BackOffice." + formName);
            
            Object obj = Activator.CreateInstance(protoclass);

            //Before opening a form close all forms opened
            foreach (Form frmChild in this.MdiChildren)
            {
                frmChild.Close();
            }

            //Open form
            protoClass frm = new protoClass(); //Here,I don't kNow how to call it.

            //frmHome as Parent
            frm.MdiParent = this;

            //show form
            frm.Show();
        }

        private void loginToolStripMenuItem_Click(object sender,EventArgs e)
        {
           //Pass the class name as a string
           createForm(frmloginAdmin);
        }

解决方法

替换这个:

protoClass frm = new protoClass();

这样:

Form frm = (Form)obj;
,

将其通用化为 CreateForm<T>() where T : Form 然后您可以使用 new T()

创建一个新表单