
Envoyé par
MoonlightSwamper
1. Pour Size, on peut directement utiliser les sous-propriétés Width et Height, par exemple en écrivant : Button1.Width = 300
Bah la justement tu ne touches pas aux sous-propriétés... tu accèdes aux propriétés Width et Height du bouton, pas de la Size. En fait la propriété Size sert juste à récupérer ou modifier à la fois la largeur et la hauteur ; dans la classe Control, la largeur et la hauteur sont stockés séparément.
Le fait que les propriétés de Size s'appellent comme celles du contrôle est purement arbitraire, c'est juste que c'était logique. Elles auraient aussi bien pu s'appeler Titi et Toto, mais ça n'aurait pas été très pratique...

Envoyé par
MoonlightSwamper
2. Pour Location, on peut aussi utiliser les sous-propriétés... à condition d'utiliser d'autres noms que ceux qui sont fournis quand on déploie l'arborescence de la structure dans la fenêtre des propriétés. X et Y sont donc inutilisables, mais on pourra en revanche utiliser Top et Left.
Idem que pour Size, sauf qu'ici ils n'ont pas choisi les mêmes noms.

Envoyé par
MoonlightSwamper
3. Pour Linkarea, on ne peut rien utiliser du tout. Ni Truc.Linkarea.Length ni Truc.Length ne sont acceptés dans une affectation (on reçoit un charmant message "Cette expression est ne valeur et ne peut donc être la cible d'une assignation" - l'aide de MSDN sur ce point semble avoir été écrite en serbo-croate et jamais traduite).
Je suppose que ce qui te pose problème est que tu ne peux pas faire ça :
1 2
| linkLabel1.LinkArea.Start = 0
linkLabel1.LinkArea.Length = 10 |
C'est lié au fait que LinkArea est une structure, donc un type valeur. La principale caractéristique des types valeurs est qu'ils sont copiés par valeur, et non par référence. Donc quand tu accèdes à linkLabel1.LinkArea, tu récupères une copie du LinkArea du LinkLabel. Donc .Start et .Length accèdent donc en fait aux propriétés d'une copie de l'objet LinkArea, et si tu modifies la copie, ça ne modifie pas l'objet d'origine (celui du LinkLabel). En pratique, ce n'est pratiquement jamais ce que l'on veut faire, et donc le compilateur le détecte et indique une erreur.
A la place, tu peux faire ça :
linkLabel1.LinkArea = New LinkArea(0, 10)
Si tu veux modifier seulement une des propriétés (Start ou Length), tu peux faire comme ça :
1 2 3 4 5 6
| ' Obtenir une copie de la valeur actuelle
LinkArea area = linkLabel1.LinkArea
' Modifier la copie
area.Length = 12
' Affecter la copie à la propriété
linkLabel1.LinkArea = area |
Partager