2010-12-14 63 views
2

Bonjour Je travaille dans VB.Net 2010 framework 2.0. Supposons que je déclare une propriété:Comment afficher la constante de la propriété au lieu de la valeur

Dim NewColor As Color = Color.FromArgb(150, 145, 145) 

Private _myColor As Color = NewColor 
Public Property MyColor() As Color 
    Get 
     Return _myColor 
    End Get 
    Set(ByVal value As Color) 
     _myColor = value 
    End Set 
End Property 

Dans le concepteur de forme, sera vu la propriété « MyColor » la valeur de 150, 145, 145. Je veux voir cette valeur comme « NewColor » dans le concepteur de formulaire. Il en va de même pour les couleurs du système ControlDark, ActiveBorder, etc. Je veux que, au lieu de la valeur de couleur, le concepteur devrait montrer le nom de la variable. Le framework .Net utilise également l'implémentation ci-dessus pour les couleurs système et ce que je veux faire.

Merci pour toute réponse à l'avance.

Répondre

0

Ceci est possible, mais pas facile.

Vous devez définir votre propre type, masquer probablement la propriété actuelle dans le navigateur, avec un attribut <Browsable(False)>, et créer une propriété shadow de votre propre type. Ce type devrait savoir quand il "pointe" sur une variable, ou a une couleur elle-même.

Sur le nouveau type, vous devez remplacer ToString pour renvoyer ce que vous voulez afficher. Et créez votre propre éditeur. Regardez EditorAttribute pour plus d'informations.

Vous pouvez créer une liste déroulante, comme Color a, avec un onglet supplémentaire qui répertorie vos variables.

Si vous ne voulez pas créer les propriétés supplémentaires (c'est un mauvais OO), vous pouvez également définir un TypeConverter sur la classe, et spécifier chaque propriété et comment vous comporter. BTW: La structure Color stocke une valeur KnownColor (Color.Red ou SystemColor.WindowText) ou les valeurs RVB. De cette façon, il sait qu'il pointe vers une couleur connue. Votre structure doit également savoir si elle pointe vers une variable (et quelle variable) ou si elle est System.Color.

+0

Pouvez-vous s'il vous plaît fournir un échantillon? – Amol

+0

Ne pas penser à des correctifs de 10 lignes courtes pour cela. Sur MSDN il y a des exemples. Pour l'éditeur: http://msdn.microsoft.com/en-us/library/53c49eck.aspx, pour TypeConverter: http://msdn.microsoft.com/en-us/library/ayybcxe5.aspx – GvS

+0

Merci pour la réponse . La solution que vous dites est la réponse. Merci encore – Amol