OVH Cloud OVH Cloud

Ajouter une propriété à un treenode

18 réponses
Avatar
Tocnet
Bonjour à tous et toutes,

Je cherche à ajouter une propriété à un treenode, pour faire cela je fais
mon usercontrol qui hérite d'un treeview et ensuite ????
La propriété que je veux ajouter est comme Treenode.tag (au même niveau)

Est-ce que vous avez une piste pour moi car je sèche ...

Merci par avance,
Sébastien

10 réponses

1 2
Avatar
Francois Muller
Bonjour
"Tocnet" a écrit dans le message de news:
df7s8n$93m$
Je cherche à ajouter une propriété à un treenode, pour faire cela je fais
mon usercontrol qui hérite d'un treeview et ensuite ????
La propriété que je veux ajouter est comme Treenode.tag (au même niveau)

Est-ce que vous avez une piste pour moi car je sèche ...



Une solution simple : tu fais une classe dérivée du Treenode, à laquelle tu
adjoins la propriété en question.

Mais Tag est une propriété native du TreeNode, donc ... comprends pas bien
ici.

F.
Avatar
Fabien Bezagu
Le probème est mon avis plus compliqué François. S'il ajoute une propriété à
son CustomTreeNode, le TreeView, lui, ne possède pas de collection de
TreeNode. C'est un problème récurrent pour lequel les solutions magiques
n'existent pas.

Généralement, on essaye de se contenter des propriétés mises à disposition
par le contrôle, telles que le tag dans ce cas.

Fabien


"Francois Muller" a écrit
dans le message de news: %
Bonjour
"Tocnet" a écrit dans le message de news:
df7s8n$93m$
Je cherche à ajouter une propriété à un treenode, pour faire cela je fais
mon usercontrol qui hérite d'un treeview et ensuite ????
La propriété que je veux ajouter est comme Treenode.tag (au même niveau)

Est-ce que vous avez une piste pour moi car je sèche ...



Une solution simple : tu fais une classe dérivée du Treenode, à laquelle
tu adjoins la propriété en question.

Mais Tag est une propriété native du TreeNode, donc ... comprends pas bien
ici.

F.




Avatar
Francois Muller
"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de news:
%
Le probème est mon avis plus compliqué François. S'il ajoute une propriété
à son CustomTreeNode, le TreeView, lui, ne possède pas de collection de
TreeNode. C'est un problème récurrent pour lequel les solutions magiques
n'existent pas.



Non, cela ne pose vraiment pas de probléme, dés l'instant où on crée les
instances de CustomTreeNode à la mimine avant de les insérer dans le
TreeView. Il suffit de caster vers TreeNode au moment de l'instertion et
quand tu les recupéres tu "recast" vers ton CustomTreeNode

C'est une solution que j'utilise trés souvent (plus souvent avec des
TabPage, qu'avec des TreeNode, mais le principe est le même)

F.
Avatar
Tocnet
Bien vu !
C'est exactement ce qui se passe.
J'ai ajouté ma propriété dans l'objet treenode at j'ai du coup une erreur
dans la l'objet TreenodeCollection...

Je vais poursuivre...Merci à tous les deux.
Sébastien

"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de news:
%
Le probème est mon avis plus compliqué François. S'il ajoute une propriété
à son CustomTreeNode, le TreeView, lui, ne possède pas de collection de
TreeNode. C'est un problème récurrent pour lequel les solutions magiques
n'existent pas.

Généralement, on essaye de se contenter des propriétés mises à disposition
par le contrôle, telles que le tag dans ce cas.

Fabien


"Francois Muller" a écrit
dans le message de news: %
Bonjour
"Tocnet" a écrit dans le message de news:
df7s8n$93m$
Je cherche à ajouter une propriété à un treenode, pour faire cela je
fais mon usercontrol qui hérite d'un treeview et ensuite ????
La propriété que je veux ajouter est comme Treenode.tag (au même niveau)

Est-ce que vous avez une piste pour moi car je sèche ...



Une solution simple : tu fais une classe dérivée du Treenode, à laquelle
tu adjoins la propriété en question.

Mais Tag est une propriété native du TreeNode, donc ... comprends pas
bien ici.

F.








Avatar
Francois Muller
"Tocnet" a écrit dans le message de news:
df93pj$530$

C'est exactement ce qui se passe.
J'ai ajouté ma propriété dans l'objet treenode at j'ai du coup une erreur
dans la l'objet TreenodeCollection...



C'est que tu oublies de convertir. Je t'assure que cela marche farpaitement
bien ;-)))

Passe un bon de ton code qui merdoit

F.
Avatar
Tocnet
Caster , cela veut dire faire un CTYPE ?

"Francois Muller" a écrit
dans le message de news:

"Tocnet" a écrit dans le message de news:
df93pj$530$

C'est exactement ce qui se passe.
J'ai ajouté ma propriété dans l'objet treenode at j'ai du coup une erreur
dans la l'objet TreenodeCollection...



C'est que tu oublies de convertir. Je t'assure que cela marche
farpaitement bien ;-)))

Passe un bon de ton code qui merdoit

F.




Avatar
Francois Muller
"Tocnet" a écrit dans le message de news:
df9i7f$h4k$
Caster , cela veut dire faire un CTYPE ?



Oui. Désolé, je suis plus habitué au C# qu'à VB.

F.
Avatar
Fabien Bezagu
oui oui tout à fait

"Tocnet" a écrit dans le message de news:
df9i7f$h4k$
Caster , cela veut dire faire un CTYPE ?

"Francois Muller" a écrit
dans le message de news:

"Tocnet" a écrit dans le message de news:
df93pj$530$

C'est exactement ce qui se passe.
J'ai ajouté ma propriété dans l'objet treenode at j'ai du coup une
erreur dans la l'objet TreenodeCollection...



C'est que tu oublies de convertir. Je t'assure que cela marche
farpaitement bien ;-)))

Passe un bon de ton code qui merdoit

F.








Avatar
Tocnet
J'avance, mais j'ai du mal, voilà mon code:

Public Class CustomTV
Inherits System.Windows.Forms.TreeView
#Region " Code généré par le Concepteur Windows Form "
...
#end Region

Private mCustomTreeNode As myTreeNode
Public Property CustomTreeNode() As myTreeNode
Get
Return mCustomTreeNode
End Get
Set(ByVal Value As myTreeNode)
mCustomTreeNode = Value
End Set
End Property
End Class
__________________________________________________________
Public Class myTreeNode
Inherits TreeNode
Private mID As Integer
Public Property ID() As Integer
Get
Return mID
End Get
Set(ByVal Value As Integer)
mID = Value
End Set
End Property
End Class
__________________________________________________
Quand j'utilise mon treeview :

Private Shared Function NewClasseTV(ByVal vTv As LibraryUC.CustomTV) As
Boolean
Dim tnParent As LibraryUC.myTreeNode
Dim tnNew As LibraryUC.myTreeNode

tnParent = CType((vTv.Nodes.Add("ABCD")), LibraryUC.myTreeNode)
tnParent.Tag = "123" & "_" & Integer.MinValue
tnParent.ID = "456"
...
end function

Sur le CTYPE, j'ai l'erreur suivante:
'Le cast spécifié n'est pas valide'
Elle est où ma boulette ????

Merci par avance,
Sébastien


"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de news:

oui oui tout à fait

"Tocnet" a écrit dans le message de news:
df9i7f$h4k$
Caster , cela veut dire faire un CTYPE ?

"Francois Muller" a écrit
dans le message de news:

"Tocnet" a écrit dans le message de news:
df93pj$530$

C'est exactement ce qui se passe.
J'ai ajouté ma propriété dans l'objet treenode at j'ai du coup une
erreur dans la l'objet TreenodeCollection...



C'est que tu oublies de convertir. Je t'assure que cela marche
farpaitement bien ;-)))

Passe un bon de ton code qui merdoit

F.












Avatar
Fabien Bezagu
Pour répondre à ta question assez rapidement : je ne sais pas.

Je répond rapidement car je reviens à ce que j'ai dit dès le début :
généralement, on se contente d'utiliser les propriétés disponibles. Sais-tu
que le tag peut référencer n'importe quel type d'objet ? Si ton problème est
d'ajouter plusieurs propriétés et que tu penses que le tag ne te suffit pas,
alors crée un nouveau type et tu créeras des instances que tu affecteras au
tag...Ca me semble plus simple.

Fabien

"Tocnet" a écrit dans le message de news:
df9kt0$knq$
J'avance, mais j'ai du mal, voilà mon code:

Public Class CustomTV
Inherits System.Windows.Forms.TreeView
#Region " Code généré par le Concepteur Windows Form "
...
#end Region

Private mCustomTreeNode As myTreeNode
Public Property CustomTreeNode() As myTreeNode
Get
Return mCustomTreeNode
End Get
Set(ByVal Value As myTreeNode)
mCustomTreeNode = Value
End Set
End Property
End Class
__________________________________________________________
Public Class myTreeNode
Inherits TreeNode
Private mID As Integer
Public Property ID() As Integer
Get
Return mID
End Get
Set(ByVal Value As Integer)
mID = Value
End Set
End Property
End Class
__________________________________________________
Quand j'utilise mon treeview :

Private Shared Function NewClasseTV(ByVal vTv As LibraryUC.CustomTV) As
Boolean
Dim tnParent As LibraryUC.myTreeNode
Dim tnNew As LibraryUC.myTreeNode

tnParent = CType((vTv.Nodes.Add("ABCD")), LibraryUC.myTreeNode)
tnParent.Tag = "123" & "_" & Integer.MinValue
tnParent.ID = "456"
...
end function

Sur le CTYPE, j'ai l'erreur suivante:
'Le cast spécifié n'est pas valide'
Elle est où ma boulette ????

Merci par avance,
Sébastien


"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de
news:
oui oui tout à fait

"Tocnet" a écrit dans le message de news:
df9i7f$h4k$
Caster , cela veut dire faire un CTYPE ?

"Francois Muller" a
écrit dans le message de news:

"Tocnet" a écrit dans le message de news:
df93pj$530$

C'est exactement ce qui se passe.
J'ai ajouté ma propriété dans l'objet treenode at j'ai du coup une
erreur dans la l'objet TreenodeCollection...



C'est que tu oublies de convertir. Je t'assure que cela marche
farpaitement bien ;-)))

Passe un bon de ton code qui merdoit

F.
















1 2