Чтобы сформировать Load () или Не формировать Load () - PullRequest
4 голосов
/ 18 февраля 2009

Должен ли я загружать дочерние формы в Конструктор или FormLoad ()?

У меня есть код, вызывающий пользовательский класс, который встраивает форму в элемент управления. Первоначально я объявлял свои дочерние формы вне Конструктора, а затем вызывал подпрограмму FormPaint () в FormLoad () для последующей загрузки форм следующим образом:

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());
}

Что, очевидно, намного меньше кода. При загрузке в конструкторе я буду использовать гораздо больше ненужных ресурсов? Я получу что-нибудь? Как мне решить?

Ответы [ 4 ]

4 голосов
/ 19 февраля 2009

Я предпочитаю использовать конструктор формы. Я имею в виду настроить все до будет отображаться форма, а не после.

2 голосов
/ 18 февраля 2009

На касательной никогда не выбрасывать исключение с помощью throw ex; Это сбросит стек вызовов. Просто используйте бросок;

2 голосов
/ 18 февраля 2009

Интересный вопрос Mr_Mom. Я рекомендую использовать ваши конструкторы, чтобы выполнить только настройку, необходимую для подформ, и отложить загрузку подформ до родительского formLoad ().

Что касается ресурсов, прибыли и потерь ... Я не знаю.

2 голосов
/ 18 февраля 2009

Уменьшение внешней сложности повысит читабельность и уменьшит возможные ошибки.

...