gpt4 book ai didi

c# - Form Constructors 与 Form Load 事件中应该包含哪些设置代码?

转载 作者:IT王子 更新时间:2023-10-29 03:47:30 30 4
gpt4 key购买 nike

对于 winforms 应用程序,我想知道应该放入什么设置代码:

  • 主窗体()

相对于

  • MainForm_Load(对象发送者, EventArgs e)

这里有什么最佳实践指南吗?

最佳答案

使用过 VB6 的程序员倾向于将大量代码放在 Load 事件中,在 VB6 中该事件用于初始化窗体。但这在 Windows 窗体中不再适用,窗体类可以有一个构造函数。 .NET 方法是在构造函数中初始化类对象,没有什么令人信服的理由不为 Form 类这样做。

Load 事件在窗体的窗口句柄创建之后立即运行,就在窗体对用户可见之前。您应该只在依赖于创建句柄的事件处理程序中编写代码。符合此要求的代码并不多,只有一种除外:需要知道窗口大小和位置的代码。

当窗体在另一台机器上运行时,窗体的设计时大小和位置属性值与它们的实际值不同。表单可以重新缩放以适应目标机器上的系统字体大小或视频适配器 DPI 设置。用户偏好也有影响,用户可能为窗口标题选择了不同的字体大小。您通常不会关心这些,除非您希望窗口在桌面上有一个特定的位置或与其他窗口对齐。

在 Load 事件中编写代码来执行诸如初始化 TreeView 或 ListView 控件之类的操作实际上会大大减慢启动时间。当您在构造函数中执行此操作时,Windows 窗体不必更新物理窗口,它尚未创建。创建 native 控件后,Winforms 会使用批量更新来初始化它,而不是像在 Load 事件中运行代码时那样一次更新一个节点/项。差别很大。

最后但并非最不重要的一点是:您永远不应该使用 Load 事件,您应该覆盖 OnLoad() 方法。当您(或其他人)从您的 Form 类继承时,这可确保代码以可预测的顺序运行。 IntelliSense 帮助您编写此方法,只需键入“protected onl”并按 Tab 键即可让 IntelliSense 自动完成该方法。请注意您如何选择在 base.OnLoad() 调用之前或之后放置代码,这就是您控制谁是老板的方式。当你把它放在后面时,你就是老板,顺便说一句,通常不是正确的选择。

关于c# - Form Constructors 与 Form Load 事件中应该包含哪些设置代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2521322/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com