J'ai mon propre contrôle personnalisé dérivé de System.Windows.Forms.TreeView qui est présent sur la boîte à outils de concepteur.C# .NET - Puis-je changer la classe à laquelle le concepteur ajoute des événements?
J'ajoute une instance de ce contrôle personnalisé à mon formulaire (en utilisant le concepteur).
Le but que j'ai créé un contrôle hérité est que je veux laisser le contrôle lui-même gérer ses événements puisqu'il est censé agir comme Voir dans une conception MVC standard. C'est à dire. lorsque la sélection du nœud dans l'arborescence change je veux que la vue gère toutes les interactions avec le Modèle.
Le problème est que lorsque j'ajoute un événement pour mon contrôle personnalisé (en utilisant le concepteur), l'événement est ajouté à ma classe MainForm. La seule option dans ce cas est de transférer chaque événement dans mon contrôle personnalisé, ce qui ne me semble pas très optimal.
Existe-t-il un moyen de contrôler la classe à laquelle l'événement est ajouté? Je sais que c'est techniquement possible puisque je peux éditer le code généré automatiquement pour mon MainForm et faire que l'événement soit déclenché dans le contrôle personnalisé. Ce n'est clairement pas la bonne solution.
Merci.
Merci! Pourriez-vous, s'il vous plaît, clarifier le type de tâches qui pourraient être effectuées avant et après l'appel de la classe de base? – sharkin
L'appel de la classe de base déclenche l'événement et peut effectuer d'autres actions. Si vous voulez que quelque chose soit fait avant que l'événement se déclenche et que les abonnés externes fassent leur chose, mettez-le avant l'appel à la base. Si vous voulez que quelque chose soit fait après que tous les événements aient été déclenchés et traités, mettez-le après. Exemple contraint: si votre contrôle a manipulé une liaison de données, vous pouvez vérifier que la liaison de données existe avant l'appel à la base et vous pouvez vouloir vérifier qu'elle est valide après (dans le cas où un gestionnaire a modifié quelque chose). –