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