Où vous désinscrire des événements dans un UserControl
? Je m'y suis inscrit dans l'événement Load
, comme je l'ai fait dans les formulaires. Et dans les formulaires, je me désabonnais généralement dans l'événement Closing
, mais je ne trouve rien de similaire dans le UserControl
...Où se désinscrire des événements dans un WinForms UserControl
Répondre
Est-il nécessaire de se désabonner du tout? Une référence au contrôle utilisateur est-elle conservée après son déchargement? Si ce n'est pas le cas, vous n'avez pas à vous soucier des gestionnaires d'événements, car dès que le contrôle utilisateur est supprimé de la mémoire, les gestionnaires d'événements le sont également. Vous ne fuyez pas les références de cette façon.
Comme d'autres l'ont dit, est-il vraiment nécessaire de vous désabonner dans votre scénario?
Si vous avez vraiment besoin de résilier votre abonnement mais vous le faire exactement l'inverse de la souscription:
UserControl1.Click -= new EventHandler(UserControl1_Click);
Mais où le ferais-je? – Svish
Il sont moments où vous voulez faire (par exemple, lors de l'utilisation CAB).
Pour être complet, la réponse à votre question est:
protected override void OnCreateControl()
{
base.OnCreateControl();
if(!DesignMode) //only time this.ParentForm should be null
this.ParentForm.FormClosing += ParentForm_FormClosing;
}
private void ParentForm_FormClosing(object sender, FormClosingEventArgs e)
{
//Unregister events here
}
Vous pouvez également remplacer Dispose()
Le problème que ce contrôle ne fait référence ni au parent ni au parent. –
- 1. Événements dans UserControl
- 2. Les événements Usercontrol ne se déclenchent pas dans Httphandler
- 3. Contrôle vs UserControl dans WinForms?
- 4. Où se trouve le journal des événements Oracle?
- 5. Winforms UserControl affiche des rectangles avec des couleurs inversées
- 6. Comment un UserControl peut-il se détruire?
- 7. Quand et où compile UserControl
- 8. Où se trouve la liste déroulante des événements dans Visual C#?
- 9. C# WinForms UserControl Mouse Aide de l'événement
- 10. Winforms a généré des événements et supprimé les gestionnaires
- 11. WinForms open popup usercontrol dans le menu déroulant menuitem?
- 12. wxPython: Gestion des événements dans un widget se trouvant dans un bloc-notes
- 13. Gestion des événements répétés dans un journal
- 14. Comment créer un projet de déploiement sans désinscrire mes assemblys?
- 15. ToolStripControlHost hébergeant un concepteur UserControl Sérialisation ne se produira pas
- 16. Les événements UserControl ne fonctionnent pas pour la première fois
- 17. Passer des valeurs d'un contrôle Usercontrol à un autre UserControl!
- 18. Un moyen de désinscrire une propriété de dépendance WPF?
- 19. C# winforms menu contextuel événements problème
- 20. Comment exposer et déclencher des événements personnalisés pour un contrôle d'utilisateur winforms vb.net
- 21. Où se trouve un fichier RDL publié?
- 22. Services Windows ne se connectant pas au journal des événements
- 23. Pourquoi les événements personnalisés n'apparaissent-ils pas dans Blend pour un UserControl?
- 24. UserControl - textbox accès à l'intérieur UserControl dans un formulaire web
- 25. Passer à l'information UserControl dans ASP.NET MVC
- 26. exposer et déclencher l'événement d'un contrôle enfant dans un usercontrol en C#
- 27. MVVM dans un canevas avec commandes usercontrol
- 28. Validation des résultats d'événement dans la perte d'un clic sur un événement dans Winforms
- 29. WPF UserControl des boutons: comment implémenter le UserControl?
- 30. Comment ajouter un déclencheur à Updatepanel où l'événement pour le déclencheur se trouve dans un contrôle utilisateur dans le répéteur?
Donc, si UserControl écoute quelque chose, et UserControl est hors de portée, le gestionnaire d'événements disparaît et le UserControl sera recueilli comme il se doit. Si quelque chose sort de la portée, il ne sera pas collecté tant que UserControl ne se sera pas désabonné ou n'aura pas été hors de portée. Ai-je bien compris? – Svish
@Svish: Non. Si UserControl écoute Quelque chose et que UserControl est hors de portée, UserControl ne sera pas ** collecté, car quelque chose contient toujours une référence à UserControl. I Quelque chose est hors de portée et UserControl ne contient aucune référence. Quelque chose sera collecté. – dtb
Donc, en d'autres termes, si quelque chose va exister après la mort de UserControl, je vais devoir vous désabonner pour le UserControl à collecter? – Svish