C#WinForm中构造函数和form_load的代码执行的区别?

木_玉 2014-07-11 10:24:54
我想把窗体设置成根据显示器的分辨率来调整大小和布局,但是我把下面代码放在构造函数和form_load下出现了不同的结果,在构造函数下出现了预期外的结果,不知道为什么,请大牛解释下,小弟刚入门:
Rectangle recScreenArea = Screen.GetWorkingArea(this);
int iWidth = recScreenArea.Width - 100;
int iHeigh = recScreenArea.Height - 100;

this.Width = iWidth;
this.Height = iHeigh;
splImgPanel.SplitterDistance = iWidth - 1440 + 860;
那个-100是我用来模拟不同屏幕分辩率用的,我的分辩率是1440,在全屏的情况下splImgPanel.SplitterDistance=860,以为我的界面是横向分为2块,右边的宽度固定(大小为1440-860),所以在不同屏幕下左边的宽度为iWidth - 1440 + 860;
问题是在构造函数下,跑完这段代码后 splImgPanel.SplitterDistance是760没错,但是最后变成了696,不知道在哪里出错了,我也跟不到;
但把同样的代码放到form_load下执行,最后splImgPanel.SplitterDistance就是760,跟预期的一样,高手们能解释下吗
...全文
1627 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
csz_1987 2014-07-15
  • 打赏
  • 举报
回复
构造 -> Form_Load -> Form_Shown 三者的先后顺序。
PaulyJiang 2014-07-14
  • 打赏
  • 举报
回复
构造 ,在构建实例的时候调用的 Load,在展现的时候调用的
Ptrtoptr 2014-07-12
  • 打赏
  • 举报
回复
构造函数早于formload很早.那时,很多窗口初始化的事都没做.而formload事件来的时候,很多窗口初始化的值都 做好了.差别很大. 可以打开***Form.Desiger.cs文件.在里面多下些断点,开始调试. 搞清执行顺序,就知道它俩的区别了
  • 打赏
  • 举报
回复
默认的构造函数会在设计完窗体之后,用于呈现窗口布局,是在Load之前执行。通常这个过程是不会让窗体使用其它资源,比如数据。 而Load事件,在第一个显示窗体前发生,窗体显示前可以进行很多操作,比如加载默认数据;执行一个方法;为一个变量赋值等等。一般的加载默认数据都要放到Load事件中,而非构造函数里,尽管那样做也可以。
相思梦 2014-07-12
  • 打赏
  • 举报
回复
Form 构造函数内首先是创建一个 无边框窗口(dwExStyle WS_EX_LEFT // NULL) 其次调用设计器方法 在其次调用OnLoad方法专项通知Load事件(组件加载) Load 中可以进行强制显示窗体利用ShowWindow函数
wangnaisheng 2014-07-12
  • 打赏
  • 举报
回复
WinForm 中的 Form_Load函数和他的构造函数 public Form()有区别: (1): public Form():程序入口,它的InitializeComponent() 做了许多初始化的工作,所以Load才能成为一个事件,InitializeComponent为你的程序作了必要的初始化工作 (2) Form_Load:装载窗口事件, 是窗体启动时触发的事件 总的来讲: 程序先执行InitializeComponent(); 后执行Form1_Load,InitializeComponent是进行一系列的初始化,Form1_Load是在窗体装载时发生的一个时间。一般写程序你把自己要初始化的东东可以放在Form1_Load中,当然也可以在InitializeComponent中,那就要重载InitializeComponent了。 这个分析还不错。 http://bbs.csdn.net/topics/300030450
threenewbee 2014-07-11
  • 打赏
  • 举报
回复
构造函数在Form_Load之前运行,一般地,构造函数会调用设计器创建控件的过程。至于两者的差别要看你的代码。

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧