2009-01-16 5 views
1

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

  • j'ai une boîte de dialogue qui étend System.Windows.Forms.Form
  • Les designer.cs générés contient déjà une mise en oeuvre de la méthode virtuelle Dispose (bool)
  • Ma forme a un champ ajouté manuellement qui implémente IDisposable

Idéalement, je serais capable de se connecter à la commande de remplacement (bool) dans le code généré pour disposer l'objet IDisposable ajouté manuellement. Des recommandations sur la façon de le faire correctement?

Merci.

Scott

Répondre

5

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

+0

du formulaire si simple :) Je ne pensais pas que le concepteur traiterait ce sujet. – user38309

2

Mais, votre domaine doit être un composant (implémenter l'interface IComponent ou quelque chose de similaire). Ce ne serait pas un peu exagéré?

Peut-être pouvez-vous attacher un eventhandler à l'événement Disposing et disposer vos champs dans ce eventhandler?

(Ou simplement les ajouter à la méthode Dispose - Je ne pense pas que ce sera un problème, car afaik, le code dans la méthode Dispose n'est pas régénéré ... Idéalement, l'implémentation de la méthode Dispose ne devrait pas ont été dans la classe * .designer.cs ...).

1

J'annuler l'inscription dans tous les événements de la méthode Dispose trouvés dans les designer.cs

protected override void Dispose(bool disposing) 
    { 
     if (disposing && (components != null)) 
     { 
      components.Dispose(); 
     } 
     _frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent; 
     base.Dispose(disposing); 
    }