如何按字符串名称打开表单?

如果我从文本框中获取字符串值,并且我的表单名称与文本框中的字符串值相同。 如何打开此表格?

string formAAA = textbox.text; // "AAA" 

我需要打开’AAA’表格;

  string formtocall = "blabla"; var form = Activator.CreateInstance(Type.GetType("namespace." + formtocall)) as Form; form.ShowDialog(); 

你需要使用reflection。

打开表单正在创建它的实例,您需要创建实例并显示它。

您将需要表单的名称及其名称空间。

 string formName= textbox.Text; string namespaceName = "MyNamespace.MyInternalNamespace"; 

然后使用激活器创建实例。

 var frm= Activator.CreateInstance(namespaceName, formName) as Form; 

然后你只需要显示表格

 frm.show(); 

使用以下:

  private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace) { return assembly.GetTypes().Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)).ToArray(); } private void Form1_Load(object sender, EventArgs e) { //Get all types Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "loopClasses"); for (int i = 0; i < typelist.Length; i++) {//Loop on them if (typelist[i].BaseType == typeof(System.Windows.Forms.Form) && typelist[i].Name == textbox.text) {//if windows form and the name is match //Create Instance and show it Form tmp =(Form) Activator.CreateInstance(typelist[i]); //MessageBox.Show(typelist[i].Name); tmp.Show(); } } }