Question

Quelle est la meilleure pratique pour implémenter IDisposable sur un Winform?

  • J'ai une boîte de dialogue qui étend System.Windows.Forms.Form
  • Le fichier designer.cs généré contient déjà une implémentation de la méthode virtuelle Dispose (bool)
  • Mon formulaire comporte un champ ajouté manuellement qui implémente IDisposable

Idéalement, je serais capable d’accrocher à la substitution Disposition (bool) dans le code généré pour supprimer l’objet IDisposable ajouté manuellement. Des recommandations sur la manière de procéder correctement?

Merci.

Scott

Était-ce utile?

La solution

Vous pouvez déplacer cette implémentation de Dispose hors de .designer.cs et dans votre .cs.

Autres conseils

Mais, alors votre champ doit être un composant (implémenter l'interface IComponent ou quelque chose de similaire). Ne serait-ce pas un peu exagéré?

Peut-être pouvez-vous associer un gestionnaire d'événements à l'événement Disposing et disposer vos champs dans ce gestionnaire d'événements?

(Ou ajoutez-les simplement à la méthode Dispose - je ne pense pas que ce sera un problème, car depuis toujours, le code de la méthode Dispose n'est pas régénéré ... Idéalement, l’implémentation de la méthode Dispose ne devrait pas appartenir à la classe * .designer.cs ...).

Je désenregistre tous les événements de la méthode Dispose trouvés dans le fichier designer.cs du formulaire

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        _frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent;
        base.Dispose(disposing);
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top