c#中的对象变量相当于c++中的指针,所以你可以用Button temp=new Button(); 创建多个对象,temp指向最后一个对象!
2 在"为控件添加事件”按钮后都有一句label1.Click+=new EventHandler(this.Test); 所以总是使得label1的事件处理多了一次!!
你说地第3各问题,我看不太明白,不知道说地是什么。
是不是要使label1.Click只有一次?那么就把label1.Click+=new EventHandler(this.Test); 放在外面或者家一个判断的变量!
2 在"为控件添加事件”按钮后都有一句label1.Click+=new EventHandler(this.Test); 所以总是使得label1的事件处理多了一次!!
你说地第3各问题,我看不太明白,不知道说地是什么。
是不是要使label1.Click只有一次?那么就把label1.Click+=new EventHandler(this.Test); 放在外面或者家一个判断的变量!
也可以添加。
这里的Name只是设计名称,设计时不能重复,可能牵涉到编译什么的。
运行时可以,恕我没时间深究:)2。那是因为你按button1时执行了:
label1.Click+=new EventHandler(this.Test);
这样每次label1的EventHandler都会多一个,当然要多次执行this.Test的。
3。简单解决办法:
设一个标志,如果label1.Click已经加过处理函数了,就不要再加了。
temp.Click+=new EventHandler(this.Test);不也重复了几次?
何况,对label1.Click+=new EventHandler(this.Test)这样的句子,我认为只是表明了一种关系,并不是有几句就会执行几次,取其最后一次罢了。第三个,我就是要加一个条件判断,让click只执行一次。我想比较click是否为null,不过做不到,只能用布尔值或int用于判断,很遗憾。
因为你每次执行了Button temp=new Button();
这样会建一个新的实例,所以每次都会增加一次按钮,
如果你想只增加一次的话,应该将temp设为成员变量,然后代码如下写:
if(temp==null)
{
temp = new Button();
temp.Text="新增加的按钮";
temp.Location=new Point(30);
temp.Click+=new EventHandler(this.Test);
this.Controls.Add(temp);
}
第三个问题:
在 label1.Click+=new EventHandler(this.Test);
之前先执行label1.Click-=new EventHandler(this.Test);
1、到底增加几个按钮?我认为始终只有一个,前一个覆盖后一个,任何时刻都只有一个。2、label的事件会发生几次,那button的事件为什么又只有一次?3、我要求以label1.Click是否为null(或Test)进行判断,决定label1.click+=语句是否执行,可不可以做到?