如何添加指定类型的控件?
假设有一窗体Form1
在代码中定义了一个字符串变更str
假设我给str赋值为"textbox"
在单击窗体时窗体中就添加了一个新的textbox控件
假设我再给str赋值为"Lable"
在单击窗体时窗体中就添加一个新的Lable控件
一般代码我会,我就是不会利用字符串"TextBox"定义出一个新的TextBox控件。代码怎么写??
[解决办法]
using System.Reflection;namespace WindowsFormsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { var controlName = textBox1.Text; if (controlName == string.Empty) { MessageBox.Show("Control Name Can Not Be Empty"); return; } var asmName = "System.Windows.Forms";//窗体控件的命名控件 var asm = Assembly.GetAssembly(typeof(Form));//载入Form控件所在的程序集 var type = asm.GetType(asmName + "." + controlName);//拼接控件的全名 if (type == null)//类型如果没有找到则返回 { MessageBox.Show("Control Name Not Found!"); return; } var controlCtorMethod = type.GetConstructor(Type.EmptyTypes);//获取构造函数(这边我假设都是无参构造函数) var control = controlCtorMethod.Invoke(null);(调用构造函数生成一个实例) this.Controls.Add(control as Control);(添加到窗体上面,本人比较懒没有做具体的位置安放,重复添加会覆盖之前添加的控件) return; } }}