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

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

Merci d'avance.

10 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
26 août 2006 à 15:39
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"
<!--
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
26 août 2006 à 17:02
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.
0
Sicyons Messages postés 25 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 31 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.

Voilà.
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
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.
0
Sicyons Messages postés 25 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 31 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.

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

--------------------------------------------
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 ++
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
28 août 2006 à 11:35
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
0
Sicyons Messages postés 25 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 31 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.

Mais est-ce seulement possible ?
0
Sicyons Messages postés 25 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 31 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) !

Je sèche un peu, là... :)
0
Rejoignez-nous