Masquage des propriétés héritées

Signaler
Messages postés
25
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
31 août 2006
-
Messages postés
25
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
31 août 2006
-
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) ?

Merci d'avance.

10 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

Avec vb6 & l'assistant, tu peux rajouter ou supprimer les propriétés/méthodes/évènements de base comme tu le veux.

Peut-être vb2005 possède la faculté d'utiliser un assistant te le permettant.

A voir !

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Salut


Je n'ai pas vb.2005 sous la main en ce moment donc je ne peux pas tester mais je pense que c'est possible avec, dans ton usercontrol hérité :

public property... (Backcolor, ...)
   get
   set
end property

ou readproperty et writeproperty

Excuses, ce ne sont que des pistes.
Messages postés
25
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
31 août 2006

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.

Voilà.
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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.
Messages postés
25
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
31 août 2006

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.

Merci encore, je teste cela dans la foulée.
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
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)

--------------------------------------------
Imports

System.ComponentModel

Public
Class UserControl1

   
False
)> _

   Public
Overrides
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

End
Class

--------------------------------------------

Tapes juste Ovverides et touche espace tu verras la liste des propriétés/méthodes/événéments que tu peux redéfinir.
Et valide par une Tabulation.

Bon courage ++
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Il me semble (peut toujours pas tester) que pour empêcher la modif du BackColor, il ne faut rien mettre dans la partie Set.

      Set(ByVal value As System.Drawing.Color)
      End
Set
Messages postés
25
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
31 août 2006

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.

Mais est-ce seulement possible ?
Messages postés
25
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
31 août 2006

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) !

Je sèche un peu, là... :)