Je dois redéfinir la méthode Add de la propriété "Controls" de myControl qui est étendue à partir d'un contrôle Panel de Windows. Pour cela, j'ai étendu la classe ControlCollection dans MyControlCollection où j'ai surchargé sa méthode Add. Maintenant, j'ai déclaré une propriété Controls du type MyControlCollection pour masquer la propriété Controls du panneau. Quand j'accède this.Controls.Add (contrôle), il se réfère à la méthode Add overriden. Mais si je traîne et abandonne un contrôle sur myControl, le comportement est de la méthode Add du type de base. Quelqu'un peut-il suggérer la cause et le remède à ce problème? Merci d'avance.Substitution de la propriété Controls d'un panneau en C#
Répondre
La cause est que le concepteur appelle Control.Controls plutôt que d'accéder à votre collection séparée. Pour être honnête, votre solution semble être destinée à causer des problèmes, ce que font habituellement les membres qui se cachent.
Qu'essayez-vous de réaliser exactement? Il ne semble pas qu'il y ait un bel événement à raconter dans ControlCollection
mais il y a peut-être une façon différente d'aborder le problème.
EDIT: Je viens de voir que Control
a un événement ControlAdded
- Abonnez-vous à cela soit assez pour vous?
Vous pouvez remplacer la fonction CreateControlCollection et renvoyer une instance de la classe de votre choix, qui hérite de System.Web.UI.ControlCollection. Supprimez la propriété Controls de votre classe, vous ne devriez pas avoir besoin de surcharger ou de masquer l'implémentation d'origine.
Ooh, sympa - je n'étais pas au courant de ça. Je pense que je tenterais toujours de ne pas exiger mon propre ControlCollection en premier lieu si possible, mais il est bon de savoir que cela peut être fait :) –
Il n'y a pas une telle méthode remplaçable pour le contrôle dans Windows. – Lalit
désolé, mon mauvais ... Je suppose que j'ai lu votre message un peu trop vite, et je pensais que vous étiez dans un contexte ASP.NET. Toutefois, dans Windows Forms, vous pouvez faire exactement la même chose en remplaçant la fonction CreateControlsInstance. – baretta
En fait, je dois restreindre l'ajout de contrôles dans mon contrôle si certains indicateurs sont vrais. J'ai utilisé cet événement ControlAdded mais il n'a ajouté que des problèmes. ControlAdded se déclenche uniquement après l'ajout de ce contrôle dans le parent à l'emplacement 0, 0. Après avoir levé cet événement, il déplace le contrôle en fonction de la position de la souris au moment de la suppression. Si je supprime ce nouveau contrôle du parent dans l'exception EventHandler de ControlAdded se produit.
- 1. Substitution de propriété étrange dans DataGridViewTextBoxCell
- 2. Fond de panneau de rendu en C#
- 3. Syntaxe correcte pour la substitution en php?
- 4. Panneau C# en tant que conteneur MDI
- 5. C# Winform: Convertit la propriété ValueMember de Combobox en longue
- 6. Substitution de la méthode de peinture DataGridViewTextBoxCell
- 7. WPF Controls Dll question
- 8. Comment créer un panneau de bannière en C#?
- 9. Unix - substitution
- 10. Substitution de la gestion onMissingTemplate dans Application.cfc
- 11. ViewState, FormView et Controls
- 12. Substitution/modification de classes C++ à l'aide de DLL
- 13. C# Formulaire transparent dans le panneau
- 14. Substitution de la fonction CreateObject dans VBScript
- 15. C# contrôle utilisateur comme un panneau personnalisé
- 16. Inplace substitution de ConfigParser
- 17. Dois-je appeler l'implémentation de la classe de base lors de la substitution d'une méthode en C# pour ASP.NET?
- 18. .Net 3.5 Tableau Controls Exception
- 19. Substitution de OnPaint
- 20. « Lecture seule » propriété accesseur en C#
- 21. Comment transférer une propriété en C++/CLI?
- 22. Empêcher le préprocesseur C d'effectuer une macro de substitution spécifique
- 23. Utilisation de app.config avec Interop Controls
- 24. Question sur extensiblity de Cocoa Touch Controls
- 25. Bash reg-exp de substitution
- 26. C# appeler l'objet par la propriété unique
- 27. Erreur d'accès de propriété C#
- 28. C# IDataErrorInfo et la propriété enfant
- 29. $ substitution de macro - limitations ExpandString
- 30. Substitution de AuthenticationProcessingFilter de Spring
Je dois restreindre l'ajout de contrôles dans myControl en fonction de certaines propriétés. ControlAdded se déclenche après l'ajout d'un nouveau contrôle dans le parent à l'emplacement 0,0. après quoi il déplace le contrôle à la position désirée. Si je supprime ce nouveau contrôle du parent dans EventHandler de ControlAdded, une exception se produit. – Lalit