Вопрос

Должен ли я загружать дочерние формы в конструкторе или 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());
}

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top