1、任何一个类都会有构造函数,即使你没有写编译器也会隐式生成默认无参数构造函数,要调用一个类的任何方法(包括静态方法,静态方法会实例化一次静态构造),都会先调用构造函数(一个类的静态实例化在整个进程周期只调用一次)。
2、From窗体也是一个类,因此会先调用构造函数,而构造函数中的InitializeComponent()方法注册了Load事件,因此当触发Load事件时就会调用该事件注册的所有委托方法(
如: private void Form1_Load(object sender, EventArgs e)
),因此只要你明白构造函数、事件、委托等这些基本原理,那就懂得这些原理了。
2、From窗体也是一个类,因此会先调用构造函数,而构造函数中的InitializeComponent()方法注册了Load事件,因此当触发Load事件时就会调用该事件注册的所有委托方法(
如: private void Form1_Load(object sender, EventArgs e)
),因此只要你明白构造函数、事件、委托等这些基本原理,那就懂得这些原理了。
3、如果VS没有提供相应设计器,都需要手写编写这些代码,那你就更容易懂得这些原理,而自动生成这些代码都是设计的功劳,所以很多初学者没有深入学习,每天都只是拖拖控件,双击控件生成相应事件,当遇到一些问题时总是无法解决,即使是简单的一些界面操作,设计器也可能会发生问题导致不正确的代码。以前的VS2003的From默认把所有代码都放在一文件里,但VS2005以后则把自动生成的代码与人工编写的代码分开存入不同的文件,这样更好方便管理代码,但很多初学者就不会去打开自动生成代码的文件,甚至不知道有那些代码。
简单一点理解:
就是Windows Form中的构造函数是用来初始化窗体实例的,只有有了窗体实例,才会调用Form1.Load()事件,而构造函数中运行InitializeComponent() 方法时,VS为InitializeComponent()产生了如下代码:
...
this.Load += new System.EventHandler(this.Form1_Load);这时候才会生成Form1.Load(),也就是说,在form窗体中,是需要等到其他控件都初始化之后才加载Form1.Load()的。