c# 动态创建系统的控件或类,这些类名或控件都是未知,只知道类的名称。要怎么写?
如知道 System.Windows.Forms.TextBox
或 System.Windows.Forms.Label
这样写 创建不出。
Activator.CreateInstance(System.Type.GetType(textBox1.Text));
示例如下:
private void Form2_Load(object sender, EventArgs e)
{
var labelType = typeof(Control).Assembly.GetType("System.Windows.Forms.Label");
var lb = (Control)Activator.CreateInstance(labelType, true);
lb.Location = new Point(10, 15);
lb.Width = 50;
lb.Text = "用户名";
Controls.Add(lb);
var textBoxType = typeof(Control).Assembly.GetType("System.Windows.Forms.TextBox");
var tb = (Control)Activator.CreateInstance(textBoxType, true);
tb.Location = new Point(60, 10);
tb.Width = 200;
Controls.Add(tb);
}
运行结果:
你这用法有误,不应该只有这么一句代码,好好看看到底怎么用,再写。
此外,每一步要赋值给变量,看是不是null,避免传错名字导致实例化不成功,那么之后针对null的操作肯定都报错。
谢谢!
https://www.cnblogs.com/zhongwh/archive/2011/04/09/2010922.html
这篇文章的解决方法。Assembly assembly = Assembly.LoadFile("程序集路径,不能是相对路径");
主要是在这里,如何加载系统的程序集。
顺便再问个问题,或我单独开一个:
我们输入 System. 这个点号后的内容 要如何获取呢?就是系统的智能提示
虽然有介绍说用SharpDevelop能用,但好复杂哦。。。