最早接触.Net是通过VB,有什么初始化全在Form.Load事件里进行。再之后转而用C#,开始时也是在Form.Load事件里进行初始化,后来感觉构造函数里初始化的效果也一样,为了代码简练,就很少再用Form.Load事件了,直到昨天晚上。
最近做东西太多的需要动态生成控件,以及控件的定位,为了方便我都是先把控件全部添加到窗体,然后再根据控件的Visible属性来确定控件位置。而这个过程我是在窗体类的构造函数里进行的,运行起来根本就不是我想象的!Why?做了个测试:
在窗体类的构造函数里加入如下语句
发现输出的全是False!一直不明白,以为是.net的Bug,就又加了个CheckBox控件来判断,这次是用的Form.Load事件:
this.checkBox1.Checked = this.textBox1.Visible,没有问题!确实是选中的!把这句话再移到Form的构造函数,没有选中!
看来控件的属性真正起作用是在Form.Load事件中进行的。
窗体类的构造函数和Form.Load事件效果不一样!
最近做东西太多的需要动态生成控件,以及控件的定位,为了方便我都是先把控件全部添加到窗体,然后再根据控件的Visible属性来确定控件位置。而这个过程我是在窗体类的构造函数里进行的,运行起来根本就不是我想象的!Why?做了个测试:
在窗体类的构造函数里加入如下语句
1
foreach(Control ctrl in this.Controls)
2

{
3
Console.WriteLine(ctrl.Visible);
4
}
foreach(Control ctrl in this.Controls)2


{3
Console.WriteLine(ctrl.Visible);4
}this.checkBox1.Checked = this.textBox1.Visible,没有问题!确实是选中的!把这句话再移到Form的构造函数,没有选中!
看来控件的属性真正起作用是在Form.Load事件中进行的。
窗体类的构造函数和Form.Load事件效果不一样!
