Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
11 janv. 2008 à 17:40
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
13 janv. 2008 à 20:03
Bonjour,
J'ai un petit problème dans l'utilisation d'une PropertyGrid. Lorsque on y affiche une classe (créé nous-même dans le code) ayant comme propriété une autre classe (aussi déclaré nous-même), cette propriété s'affiche en grisé et impossible à "ouvrir":
J'ai créé une classe ayant 2 propriétés, une qui est un Button (ValeurEditable) et donc une classe du framework, une autre qui est une classe que j'ai créé moi même (ValeurPasEditable). Dans la PropertyGrid ca s'affiche comme ca:
La ValeurEditable, qui est une classe Button, possède donc un petit + qui permet de l'ouvrir et de naviguer parmi ses propres propriétés. Mais pour la propriété ValeurPasEditable, qui est une classe que j'ai déclaré moi même, rien à faire, ca reste en grisée et impossible à ouvrir.
Pourtant, lorsque on debug et qu'on met cette classe en espion, on peut sans problème naviguer dans cette ValeurNonEditable:
Et d'ailleur, le problème s'applique aussi lorsque on créé un UserControl et que l'une de ses propriétés est une classe que nous avons nous-même déclarée:
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 11 janv. 2008 à 21:31
Salut
Je ne vois pas trop comment tu as fais pour rendre readonly ta propriété
Je suis intéressé de comprendre d'ou vient ton problème
Voici une classe qui fonctionne
Imports System.ComponentModel
Public Class test
Private m_valeur As Integer
_
<Category("Test")> _
<Description("Description")> _
Public Property valeur() As Integer
Get
Return m_valeur
End Get
Set(ByVal value As Integer)
m_valeur = value
End Set
End Property
End Class
________________________________________________
Voici une classe qui est en readonly
Public Class test
Private m_valeur As Integer
_
<Category("Test")> _
<Description("Description")> _
Public ReadOnly Property valeur() As Integer
Get
Return m_valeur
End Get
End Property
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 12 janv. 2008 à 02:53
Salut,
Oui mais là tu expose un Integer avec ta propriété, pour ça y'a pas de soucis... mais ça n'a rien a voir. Si je reprend ce que je disais:
"J'ai un petit problème dans l'utilisation d'une PropertyGrid. Lorsque
on y affiche une classe (créé nous-même dans le code) ayant comme
propriété une autre classe (aussi déclaré nous-même), cette propriété
s'affiche en grisé et impossible à "ouvrir""
"La ValeurEditable, qui est une classe Button, possède donc un petit +
qui permet de l'ouvrir et de naviguer parmi ses propres propriétés.
Mais pour la propriété ValeurPasEditable, qui est une classe que j'ai
déclaré moi même, rien à faire, ca reste en grisée et impossible à
ouvrir."
"Et d'ailleur, le problème s'applique aussi lorsque on créé un
UserControl et que l'une de ses propriétés est une classe que nous
avons nous-même déclarée"
De plus, on voit bien dans la boite "Espion" que la propriété dont je parle est une classe (ayant donc des membres)
Un Integer n'a pas de propriétés publiques à afficher dans une PropertyGrid, c'est clair
Par exemple, créé une une classe MyProperty avec des propriétés publiques, puis créé un control MyControl ayant une propriété publique as MyProperty. Ajoute MyControl sur un formulaire et regarde ses propriétés dans la boite "Propriété" de l'IDE: La propriété retournant un MyProperty est grisé et il n'y a pas de petit + pour afficher ses membres.
Par contre, si tu ajoute une nouvelle propriété à MyControl retournant cette fois une classe du framework (par exemple button), la propriété ne sera pas grisé dans la PropertyGrid...