在A处前你应该先设置窗体的StartPosition(窗体第一次出现的位置)为FormStartPosition.Manual(窗体的位置由 System.Windows.Forms.Control.Location 属性确定)
如果在A处不设置StartPosition的话默认为FormStartPosition.WindowsDefaultLocation(窗体定位在 Windows 默认位置,其尺寸在窗体大小中指定)
括号里是属性的中文翻译,也就是说在窗体第一次显示时的位置是跟窗体的StartPosition属性有关的,第一次显示以后就只和窗体的Location属性有关了,我想这么说你应该能明白,代码如下A+B=C
public Form2()
{
InitializeComponent();
this.StartPosition = FormStartPosition.Manual; //A
this.Location = new Point(0, 0); //B
}
private void Form2_Load(object sender, EventArgs e)
{
this.Location = new Point(0, 0); //C
}
我的理解是:
构造函数只确定该窗体自身的一些属性,即发生在构建该窗体的结构时。
Load事件发生在窗体加载时
这就好比:你做了一个正方形,正方形的颜色是什么样的,里面还有那些图形,这些都是构造函数做的,而正方形做好后,你要把它摆放在什么位置,这是Load事件做的。
再和窗体相比较,这个概念应该就好理解了吧?
因为在A的地方窗体的位置已经确定了,窗体已经出现,改变位置是无效的。
很简单,对于静态只读属性,只有一个地方可以改变它而使它有效,这个地方就是构造函数。