Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 要形成Load()还是不形成Load()_C#_.net_Winforms_Constructor_Form Load - Fatal编程技术网

C# 要形成Load()还是不形成Load()

C# 要形成Load()还是不形成Load(),c#,.net,winforms,constructor,form-load,C#,.net,Winforms,Constructor,Form Load,我应该在构造函数中加载子窗体还是在FormLoad()中加载子窗体 我有一些代码调用一个自定义类,该类将表单嵌入控件中。我最初在构造函数外部声明我的子表单,然后在FormLoad()中调用FormPaint()例程,然后像这样加载表单: internal frmWWCMCPHost frmWWCMCPHost = new frmWWCMCPHost(); internal frmWWCEnrollmentHost frmWWCEnrollmentHost = new frmWWCEnrollme

我应该在构造函数中加载子窗体还是在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();
}
现在,我已经看到了一种更好的方法,可以在容器控件中嵌入表单,因为它与我的自定义类有关

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

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

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

减少外部复杂性将提高可读性,并应减少可能的错误

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

有趣的问题,妈妈先生。我的建议是使用构造函数只进行子窗体所需的设置,并推迟加载子窗体,直到父窗体加载()


至于资源、收益和损失。。。我不知道

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

你能详细说明一下我的问题吗?我不确定您建议我在构造函数中或在构造函数中放置FormLoad()?时做什么,因为它们是表单的一部分。在Form load中设置变量选项。因此,在构造函数中删除表单,但在formLoad()中对其执行任何其他操作。谢谢,因为它们是表单不可分割的一部分,如果它们是可选的,我会将它们放入formLoad()谢谢!那我就把它当作扔吧?你真的不应该抓住(例外)然后再扔,永远也不应该;这是毫无意义的。所以我甚至不应该在这里使用try,catch?不。只捕获你要处理的异常。当像上面那样做时,VS告诉我“变量'ex'已声明但从未使用过…”这是正常的还是新的So线程?