Affecter une valeur automatique à une structure (comme Color = xxx)
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
26 juin 2008 à 23:03
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
29 juin 2008 à 15:43
Salut à tous,
Comment fait-on pour pouvoir proposer des valeurs (par IntelliSense) à affecter à une structure lorsque on édite du code? Je voudrais faire comme c'est fait avec la structure Color:
On tape "MyColor As Color =" et toute une liste de couleurs est affiché par IntelliSense, de la même façon que les valeurs d'un enum.
Qqun à une idée?
Merci d'avance...
A voir également:
Affecter une valeur automatique à une structure (comme Color = xxx)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 26 juin 2008 à 23:19
Visiblement ça marche aussi en .net :
Imports WindowsApplication4.test
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
MyBase.Load
Dim tclasse As New test
tclasse.marsu = tstlist.nul
End Sub
End Class
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Public Class test
Private _marsu As Integer
Public Enum tstlist As Integer
nul = 0
premier = 1
second = 2
ainee = 3
End Enum
Public Property marsu() As tstlist
Get
Return _marsu
End Get
Set(ByVal value As tstlist)
_marsu = value
End Set
End Property
End Class
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 27 juin 2008 à 02:45
Mouais pour faire ça avec l'enum pas de soucis, je connais. Mais dans ce cas il ne s'agit pas d'un membre du type de l'enum, mais d'une strucure. Color est une structure, et il n'est pas possible de créer un enum ayant des strucutre comme valeurs.
Dim myColor As Color = Color.Blue
Color.Blue ne retourne donc pas une valeur qu'il est possible de mettre dans un enum (Byte, Integer...) mais d'une structure Color.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 27 juin 2008 à 09:12
Si tu connais un peu le C#, tu peux toujours regarder dans les sources de la classe Color pour trouver une solution.
Les différentes couleurs semblent etre définie comme des propriétés.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 27 juin 2008 à 22:53
As-tu trouver une solution à ton problème ?
Si tu en as une, claire, je sius interessé.
Perso, je n'avais rien à faire ce soir, je viens de me traduire la source de la classe Color en VB (bon ok, avec l'aide du convertisseur de codes-sources )
Je regarderais ça à tete reposer pour essayer de comprendre
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 28 juin 2008 à 17:41
Excuse mon ignorance, mais où trouves-tu le code source des objets du framework?
Effectivement, les différentes couleurs sont des propriétés statiques (Shared en VB)
Si j'avais su qu'on pouvait avoir le code source du framework, bon nombre de mes questions auraient déjà eu des réponses
La source d'un contrôle liste comme la ListBox m'intéresserait beaucoup aussi d'ailleur...
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 28 juin 2008 à 21:13
Merci pour cette info, elle est le bienvenue
J'ai donc téléchargé le code source de System.Drawing.DLL, et j'ai regardé la classe Color et ColorConverter. Mais je n'ai rien trouvé pour l'instant, je vais encore voir ça plus en détail dès que j'ai le temps.
Par contre, lorsque j'essaie de convertir le code avec le convertisseur de codes-sources, il me donne une erreur:
Erreur rencontrée par le parseur: Line 1852 col 1: EOF expected
Je ne sais pas de quoi ça vient...
Je te tient au courant si je trouve quelque-chose.
Encore merci pour tes réponses
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 29 juin 2008 à 15:43
J'ai trouvé. La solution se trouve dans le TypeConverter:
Public Class UnitConverter
Inherits TypeConverter
Public Overrides Function GetStandardValuesSupported(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
Return True
End Function
Public Overrides Function GetStandardValues(ByVal context As System.ComponentModel.ITypeDescriptorContext) As System.ComponentModel.TypeConverter.StandardValuesCollection
Return New StandardValuesCollection([Enum].GetNames(GetType(AllUnits)))
End Function
End Class
Sauf que pour l'instant, ça ne marche pas encore dans mon cas