Winforms, create form instance by form name
c#, winforms
Solution
You need the Activator.CreateInstance method which creates an instance of a type given a `Type`:
public Form TryGetFormByName(string frmname)
{
var formType = Assembly.GetExecutingAssembly().GetTypes()
.Where(a => a.BaseType == typeof(Form) && a.Name == frmname)
.FirstOrDefault();
if (formType == null) // If there is no form with the given frmname
return null;
return (Form)Activator.CreateInstance(formType);
}
Problem
I need a method that returns a new instance of a form by the name of the form. Here is what I have so far: ``` public Form GetFormByName(string frmname) { return Assembly.GetExecutingAssembly().GetTypes().Where(a => a.BaseType == typeof(Form) && a.Name == frmname).Cast<Form>().FirstOrDefault(); } ``` However I get the following error when I attempt to execute this code: Unable to cast object of type 'System.RuntimeType' to type 'System.Windows.Forms.Form'. What does this error mean?