using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace TestDemo { public partial class Form1 : Form { Label lb = new Label(); Label aa; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { lb.Text = "sdfsdfdfsdfsdfsdfsdf"; lb.Location = new Point(40, 50); lb.Size = new Size(new Point(100, 10)); this.Controls.Add(lb); this.Controls.Remove(lb); lb.Text = "123"; lb.Location = new Point(60, 80); lb.Size = new Size(new Point(100, 10)); this.Controls.Add(lb); this.Controls.Remove(lb); aa = new Label(); aa.Text = "888888"; aa.Name = "a1"; aa.Location = new Point(150, 100); aa.Size = new Size(new Point(100, 10)); this.Controls.Add(aa); this.Controls.Remove(aa); aa = new Label(); aa.Text = "99999"; //把aa.Text = "888888"覆盖,但 aa.Text = "888888"会在Form上留下痕迹 aa.Name = "a2"; aa.Location = new Point(200, 150); aa.Size = new Size(new Point(100, 10)); this.Controls.Add(aa); this.Controls.Remove(aa); Label cc = new Label(); cc.Text = "00000000"; cc.Name = "a3"; cc.Location = new Point(180, 120); cc.Size = new Size(new Point(100, 10)); this.Controls.Add(cc); //Label lb = new Label(); cc.Text = "00000000"; cc.Name = "a3"; cc.Location = new Point(180, 120); cc.Size = new Size(new Point(100, 10)); this.Controls.Add(cc); //this.Controls.Remove(cc); this.Controls.Remove(this.textBox1); } private void button1_Click(object sender, EventArgs e) { //虽然lb在Form上别删除但是实际是并没有删除的。下面一句可以将该空间添加回来的(添加回来的空间是最后删除前控件的值) //总结:定义为全局变量的对象在整个过程中都存在 //全局对象在定义的同时实例化和非实例化几乎是差不多的,在真个过程中只会有时实例。只是定义实体但不复制的实体会有“瞬间值” //这个值将被下次复制而取代,实体将不再存在(但这个瞬间值会留下痕迹,在Form上显示,但是你不可能在找到它了) //如果一直想对同一对象操作,而不希望看到其他的变化,可以用全局对象在定义同时并实例化 //如果一直想对同一对象操作,希望看到其他的变化,可以用全局对象在定义,在每次使用是单独实例化 if (lb != null) { this.Controls.Remove(lb);//前面删除了,竟然还可以删除,是因为是全局对象保存了值 this.Controls.Add(lb); //添加可以,同上原因 } if (aa != null) { this.Controls.Remove(aa);//同上 this.Controls.Remove(aa);//同上 } this.Controls.Remove(textBox1); this.Controls.Add(textBox1); } } }