質問

I)は、(コンストラクタまたは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();
}

それは私のカスタムクラスに関連する今、私は<、コンテナコントロールでフォームを埋め込むもっと良い方法が示されているのhref = "https://stackoverflow.com/questions/543087/custom-class-for-対処-で埋め込みインフォーム/ 545864#545864" >ここを。

:そうのように

私の質問私は例として、これらをロードする必要がありますされ、それらは、それらを同時に宣言コンストラクタにロードされています

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

どの、明らかに、はるかに少ないコードです。コンストラクタでロードすることにより、私ははるかに多くの不必要なリソースを使用することになりますか?私は何を得ることでしょうか?どのように私が決めるのですか?

役に立ちましたか?

解決

興味深い質問Mr_Mom。私の推薦は、サブフォームに必要なだけのセットアップを行うと、親formLoad()まで、サブフォームのロードを先送りにするためにあなたのコンストラクタを使用することです。

資源、利益、およびlostsについては...私は知りません。

他のヒント

私は、フォームのコンストラクタを使用することを好みます。私が意味する、セットアップのすべてが にする前にフォームがない後、表示されます。

外向きの複雑さを減らすことは、読みやすさを向上し、エラーの可能性を減らす必要があります。

接線上で、これまでのスローEXを使用して例外を再スローしません。これは、コールスタックをリセットします。ただ、スローを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top