4

我应该在构造函数还是 FormLoad() 中加载子表单?

我有一些代码正在调用在控件中嵌入表单的自定义类。我最初是在构造函数之外声明我的子表单,然后在 FormLoad() 中调用 FormPaint() 例程,然后像这样加载表单:

internal frmWWCMCPHost frmWWCMCPHost = new frmWWCMCPHost();
internal frmWWCEnrollmentHost frmWWCEnrollmentHost = new frmWWCEnrollmentHost();
internal frmWWCMemberHost frmWWCMemberHost = new frmWWCMemberHost();

public frmWWCModuleHost()
{
    InitializeComponent();        
}

private void frmWWCModuleHost_Load(object sender, EventArgs e)
{
    FormPaint();
}

public void FormPaint()
{
    WinFormCustomHandling.ShowFormInControl(frmWWCMCPHost, ref tpgMCP, FormBorderStyle.FixedToolWindow,-4,-2);
    WinFormCustomHandling.ShowFormInControl(frmWWCMemberHost, ref tpgMember, FormBorderStyle.FixedToolWindow, -4, -2);
    WinFormCustomHandling.ShowFormInControl(frmWWCEnrollmentHost, ref tpgEnrollment, FormBorderStyle.FixedToolWindow, -4, -2);

    // Call each top-Level (visible) tabpage's form FormPaint()
    frmWWCMCPHost.FormPaint();
}

现在我已经看到了一种在容器控件中嵌入表单的更好方法,因为它与我的自定义类有关,here

我的问题是我应该在哪里加载这些,因为示例将它们加载到同时声明它们的构造函数中,如下所示:

public frmWWCModuleHost()
{
    InitializeComponent();
    WinFormCustomHandling.ShowFormInContainerControl(tpgCaseNotes, new XfrmTest());
}

显然,这是更少的代码。通过在构造函数中加载,我会使用更多不必要的资源吗?我会有所收获吗?我该如何决定?

4

4 回答 4

4

我更喜欢使用表单的构造函数。我的意思是在显示表单之前设置所有内容,而不是之后。

于 2009-02-18T21:23:34.510 回答
2

减少外部复杂性将增加可读性,并应减少可能的错误。

于 2009-02-18T18:59:07.883 回答
2

切线,永远不要使用 throw ex 重新抛出异常;它将重置调用堆栈。只需使用 throw;

于 2009-02-18T19:12:55.853 回答
2

有趣的问题 Mr_Mom。我的建议是使用您的构造函数只执行子表单所需的设置,并将子表单的加载推迟到父表单加载()。

至于资源、得失……我不知道。

于 2009-02-18T20:53:41.897 回答