Question

Dois-je charger des formulaires enfants dans le constructeur ou l'FormLoad ()?

J'ai un code qui appelle une classe personnalisée qui intègre une forme dans un contrôle. J'avais été à l'origine de déclarer mes formulaires enfants en dehors du constructeur, puis appeler un FormPaint () de routine dans le FormLoad () pour ensuite charger les formes comme ceci:

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

Maintenant, j'ai montré une bien meilleure façon d'intégrer les formes dans les contrôles de conteneurs, en ce qui concerne ma classe personnalisée, ici .

Ma question est où dois-je le chargement, comme l'exemple les a en cours de chargement dans le constructeur en les déclarant en même temps, comme suit:

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

Ce qui est, évidemment, beaucoup moins de code. En chargeant dans le constructeur vais-je utiliser des ressources beaucoup plus inutiles? Suis-je gagnais quelque chose? Comment puis-je décider?

Était-ce utile?

La solution

Mr_Mom question intéressante. Ma recommandation serait d'utiliser vos constructeurs pour faire que la configuration nécessaire pour les formes de sous et de mettre hors chargement des formes sous jusqu'à ce que la formLoad mère ().

En ce qui concerne les ressources, les gains et losts ... Je ne sais pas.

Autres conseils

Je préfère utiliser le constructeur de forme. Je veux dire tout de configuration avant une forme serait montrée, pas après.

La réduction de la complexité extérieure augmentera la lisibilité et devrait réduire les erreurs possibles.

Sur une tangente, jamais réémettre une exception en utilisant un jet ex; Il va réinitialiser la pile d'appel. Il suffit d'utiliser un jet;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top