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

8 réponses

1 2
Avatar
Tocnet
Tu as raison. En fait je peux mettre toutes mes données dans Tag, mais je
veux utiliser ce cas qui ùe semble simple, pour m'exercer dans la
création/modification d'un user controle.
Mais je retiens ton idée, merci pour tout.

Sébastien

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

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.




















Avatar
Zoury
> Caster , cela veut dire faire un CTYPE ?



Théoriqement ce serait DirectCast... consulte la section "Remarque" (il me
semble) de l'aide de DirectCast pour connaitre la différence entre les 2.

--
Cordialement
Yanick
MVP pour Visual Basic

"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
Zoury
Salut ! :O)


tnParent = CType((vTv.Nodes.Add("ABCD")), LibraryUC.myTreeNode)



Tu dois ajouter un TreeNodeEx dans ta collection et non un TreeNode sinon,
tu ne pourras jamais le caster en TreeNodeEx (puisque ça n'en est pas un)
Ex :
'***
Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Code généré par le Concepteur Windows Form "

Public Sub New()
MyBase.New()

'Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()

'Ajoutez une initialisation quelconque après l'appel
InitializeComponent()

End Sub

'La méthode substituée Dispose du formulaire pour nettoyer la liste des
composants.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Requis par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer

'REMARQUE : la procédure suivante est requise par le Concepteur Windows
Form
'Elle peut être modifiée en utilisant le Concepteur Windows Form.
'Ne la modifiez pas en utilisant l'éditeur de code.
Friend WithEvents TreeView1 As System.Windows.Forms.TreeView
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.TreeView1 = New System.Windows.Forms.TreeView
Me.SuspendLayout()
'
'TreeView1
'
Me.TreeView1.ImageIndex = -1
Me.TreeView1.Location = New System.Drawing.Point(24, 16)
Me.TreeView1.Name = "TreeView1"
Me.TreeView1.SelectedImageIndex = -1
Me.TreeView1.Size = New System.Drawing.Size(232, 216)
Me.TreeView1.TabIndex = 0
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Controls.Add(Me.TreeView1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub

#End Region

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Dim tn As New TreeNodeEx
tn.Text = "test"
tn.ID = 4
TreeView1.Nodes.Add(tn)

End Sub

Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As
System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect

Me.Text = DirectCast(e.Node, TreeNodeEx).ID.ToString()

End Sub

End Class
'***

--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Tocnet
Merci Zoury, cela fonctionne.
En fait je comprend qu'il n'est pas utile dans mon cas de créer un Treeview
perso, cela fonctionne avec mon treenode directement.

Merci pour ton aide,
Sébastien

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
Salut ! :O)


tnParent = CType((vTv.Nodes.Add("ABCD")), LibraryUC.myTreeNode)



Tu dois ajouter un TreeNodeEx dans ta collection et non un TreeNode sinon,
tu ne pourras jamais le caster en TreeNodeEx (puisque ça n'en est pas un)
Ex :
'***
Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Code généré par le Concepteur Windows Form "

Public Sub New()
MyBase.New()

'Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()

'Ajoutez une initialisation quelconque après l'appel
InitializeComponent()

End Sub

'La méthode substituée Dispose du formulaire pour nettoyer la liste des
composants.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Requis par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer

'REMARQUE : la procédure suivante est requise par le Concepteur Windows
Form
'Elle peut être modifiée en utilisant le Concepteur Windows Form.
'Ne la modifiez pas en utilisant l'éditeur de code.
Friend WithEvents TreeView1 As System.Windows.Forms.TreeView
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.TreeView1 = New System.Windows.Forms.TreeView
Me.SuspendLayout()
'
'TreeView1
'
Me.TreeView1.ImageIndex = -1
Me.TreeView1.Location = New System.Drawing.Point(24, 16)
Me.TreeView1.Name = "TreeView1"
Me.TreeView1.SelectedImageIndex = -1
Me.TreeView1.Size = New System.Drawing.Size(232, 216)
Me.TreeView1.TabIndex = 0
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 266)
Me.Controls.Add(Me.TreeView1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub

#End Region

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Dim tn As New TreeNodeEx
tn.Text = "test"
tn.ID = 4
TreeView1.Nodes.Add(tn)

End Sub

Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As
System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect

Me.Text = DirectCast(e.Node, TreeNodeEx).ID.ToString()

End Sub

End Class
'***

--
Cordialement
Yanick
MVP pour Visual Basic



Avatar
Francois Muller
Bonjour

"Tocnet" a écrit dans le message de news:
dffdsu$q75$
Merci Zoury, cela fonctionne.
En fait je comprend qu'il n'est pas utile dans mon cas de créer un
Treeview perso, cela fonctionne avec mon treenode directement.



C'est ce que je voulais dire quand j'avais écrit :

"dés l'instant où on crée les instances de CustomTreeNode à la mimine avant
de les insérer dans le
TreeView"

Peut être m'étais je mal exprimé ...

F.
Avatar
Tocnet
Hello,

Je ne vais pas avoir l'impolitesse d'accuser quelqu'un de mal s'exprimer
quand cette personne est entrain de m'aider !

Si je pousse le vice à fond, est-ce que tu as essayé d'aller jusqu'au bout
de la démarche, c'est à dire un treeview perso qui utilise un treenode perso
?

Encore merci pour ton aide et celle des autres évidemment.
Sébastien



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

"Tocnet" a écrit dans le message de news:
dffdsu$q75$
Merci Zoury, cela fonctionne.
En fait je comprend qu'il n'est pas utile dans mon cas de créer un
Treeview perso, cela fonctionne avec mon treenode directement.



C'est ce que je voulais dire quand j'avais écrit :

"dés l'instant où on crée les instances de CustomTreeNode à la mimine
avant de les insérer dans le
TreeView"

Peut être m'étais je mal exprimé ...

F.





Avatar
Francois Muller
"Tocnet" a écrit dans le message de news:
dfi2sv$71p$
Je ne vais pas avoir l'impolitesse d'accuser quelqu'un de mal s'exprimer
quand cette personne est entrain de m'aider !



;-))

Si je pousse le vice à fond, est-ce que tu as essayé d'aller jusqu'au bout
de la démarche, c'est à dire un treeview perso qui utilise un treenode
perso



Oui, tout à fait. Sans pb.

F.
Avatar
Tocnet
Alors je vais poursuivre...

Sébastien

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

"Tocnet" a écrit dans le message de news:
dfi2sv$71p$
Je ne vais pas avoir l'impolitesse d'accuser quelqu'un de mal s'exprimer
quand cette personne est entrain de m'aider !



;-))

Si je pousse le vice à fond, est-ce que tu as essayé d'aller jusqu'au
bout de la démarche, c'est à dire un treeview perso qui utilise un
treenode perso



Oui, tout à fait. Sans pb.

F.




1 2