Sicyons
Messages postés25Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention31 août 2006
-
26 août 2006 à 15:21
Sicyons
Messages postés25Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention31 août 2006
-
28 août 2006 à 12:31
Salut à tous !
J'ai une petite question : Lorsque l'on crée un UserControl, on hérite automatiquement des propriétés de base de la classe UserControl (Backcolor, Backgroundimage, etc...)
Peut-on en désactiver certaines (avec des attributs, ou autrement) ?
Sicyons
Messages postés25Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention31 août 2006 26 août 2006 à 22:51
Salut à vous (re-salut Mortalino ;) Pour info je t'ai répondu sur ton Topic de problème mémoire .NET)
Merci pour vos tentatives de réponses. Mais cela ne peut pas m'aider.
C'est de la prog orientée objet (donc rien à voir avec VB6). Ces propriétés sont directement attribuées d'office ("héritées") à mon contrôle. De plus c'est un contrôle utilisateur destiné à d'éventuels développeurs. Et surtout, je veux les rendre invisible pour le développeur qui voudrait utiliser ma DLL renfermant ce contrôle.
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 26 août 2006 à 23:00
Sicyons,
Salut Mortalino
Oui tu bénéficies des propriétés de base d'un UserControl lorsque tu en créé un. Cela me parait logique non...
Et non tu ne peux pas les désactiver mais juste les masquer dans le designer de VB avec l'attribut Browsable
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 26 août 2006 à 23:04
Sicyons,
Si tu ne veux pas que tes développeurs voient certains membres (propriétés, méthodes, événements...) alors change la portée de ces membres en Friend qui est par défaut à Public.
Sicyons
Messages postés25Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention31 août 2006 27 août 2006 à 20:06
Willi : Merci pour ta réponse. Pour le principe de "portée" je suis au courant. Merci quand même. Mais je crois que ta première suggestion pourrait correspondre à mon problème.
Et oui c'est logique d'hériter de ces propriétés de base. Mais ces propriétés sont "génériques" et risquent de ne pas correspondre à bien des contrôles utilisateurs, ce qui est mon cas.
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 27 août 2006 à 20:22
Tu peux bien évidemment cacher les propriétés de base de ton usercontrol
Voici un exemple, je masque la propriété BackColor dans le designer en la redéfinissant (Overrides)
Sicyons
Messages postés25Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention31 août 2006 28 août 2006 à 12:19
Merci encore Willi : C'est très exactement ce que je viens de tester avec succès.
Mais cela ne résoud qu'une partie de mon problème : les propriétés sont désormais invisibles dans le panneau "Propriétés" du designer de Forms.
Mais je souhaiterais qu'elles n'apparaissent plus dans les menus contextuels Intellisense (dans le code, quand u tapes "." à la suite d'un nom d'objet). Bref, que le développeur n'ai vraiment plus accès à ces propriétés et méthodes.
Sicyons
Messages postés25Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention31 août 2006 28 août 2006 à 12:31
Dolphin Boy : Merci, mais j'ai oublié de préciser qu'il s'agit de VB .NET 2005. l'équivalent est donc d'utiliser "Readonly" dans la déclaration de propriété.
Willi : Comme je viens de le dire, j'ai la possibilité de rendre la propriété en lecture seule, mais c'est peu satisfaisant.
De même, j'ai essayé de masquer la propriété originale avec une version privée
:
_
Private Shadows Property BackColor() As System.Drawing.Color
Get
Return MyBase.BackColor
End Get
Set(ByVal value As System.Drawing.Color)
MyBase.BackColor = value
End Set
End Property
Mais "Shadows" n'est utilisable qu'avec une métthode ou propriété originale de la même portée (Public) !