.net Winforms窗体构造函数与加载事件

.net Winforms窗体构造函数与加载事件,.net,winforms,constructor,initialization,onload-event,.net,Winforms,Constructor,Initialization,Onload Event,当加载表单时,代码需要执行诸如设置数据网格、组合框、设置标题等操作。我倾向于总是使用加载事件,而不是新的(构造函数)。对于哪种方法最适合于哪种活动,有什么指导原则吗?基本上,您希望您的构造函数尽可能轻。我尝试将大部分内容放在Load事件处理程序中,因为UI元素已经创建并且此时可用。但是,我通常在构造函数中实例化类对象等,因为它实际上是构造对象的一部分。有时候你不能把东西放在一个地方或另一个地方,但在你可以的时候,你应该把它们放在最合适的地方。对InitializeComponent的调用会自动插

当加载表单时,代码需要执行诸如设置数据网格、组合框、设置标题等操作。我倾向于总是使用加载事件,而不是新的(构造函数)。对于哪种方法最适合于哪种活动,有什么指导原则吗?

基本上,您希望您的构造函数尽可能轻。我尝试将大部分内容放在Load事件处理程序中,因为UI元素已经创建并且此时可用。但是,我通常在构造函数中实例化类对象等,因为它实际上是构造对象的一部分。有时候你不能把东西放在一个地方或另一个地方,但在你可以的时候,你应该把它们放在最合适的地方。

对InitializeComponent的调用会自动插入表单/页面的构造函数中。InitializeComponent是自动生成的

  • 在winform/XAML页面上创建各种UI元素
  • 使用资源文件中存储的值初始化其属性
因此,与UI安排/修改相关的任何内容都应该在本次调用之后进行。当您在Form.OnLoad的重写中执行此操作时,可以确保UI已准备就绪(已调用InitializeComponent)。。。所以我会投票支持用户界面的OnLoad。

创建非UI成员时,构造函数将是我首先看到的地方。

请记住,表单构造函数中的任何内容都将在表单创建时创建/执行。i、 e.在:

表格frm=新表格()

而加载事件中的任何内容只有在表单显示时才会发生,即。
frm.Show()

请注意,还显示了一个事件。加载事件发生在窗体显示之前,但窗口存在且布局完成时。