OVH Cloud OVH Cloud

Visual basic express, XML, TreeView, Nodes, Attributs

7 réponses
Avatar
Bonjour,

Grâce à la procédure ci-dessous trouvée sur vbfrance j'arrive à afficher
un fichier XML dans un TreeView .

Private Sub ChargeTreeView()
Dim X As New XmlDocument()
X.Load("c:\Fichier.xml")
TreeView1.Nodes.Clear() 'On vide le treeview
Dim N As XmlNode
N = X.DocumentElement
Dim Tn As New TreeNode(N.Name) '.Attributes("Text").Value)
Tn.Tag = 0
TreeView1.Nodes.Add(Tn) 'Ajout du 1er noeud
Tn = Nothing
Dim tNode As New TreeNode()
tNode = TreeView1.Nodes(0)
AddNode(X.DocumentElement, tNode)
TreeView1.ExpandAll()
End Sub

Important : pour des raisons esthétiques je ne veux pas afficher les
attributs des nodes dans le TreeView.

Question : comment faire, en cliquant sur un node, pour lister et détailler
les
attributs de ce node dans un MsgBox. Existe t'il un code pour faire ça ?

Merci à vous,

Estelle

7 réponses

Avatar
Richard Clark
Un truc que j'utilise régulièrement: La prop Tag d'un TreeNode est un
object, donc tu peux y mettre ce que tu veux dedans. Par exemple:

Tn.Tag = N

Du coup, par la suite, tu peux récupérer toutes les infos :

Dim N as XmlNode = CType(Tn.Tag, XmlNode)

Bon y'a aussi la possibilité de dériver la classe TreeNode mais pour faire
rapide, ma solution marche bien.

--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Bonjour,

Grâce à la procédure ci-dessous trouvée sur vbfrance j'arrive à afficher
un fichier XML dans un TreeView .

Private Sub ChargeTreeView()
Dim X As New XmlDocument()
X.Load("c:Fichier.xml")
TreeView1.Nodes.Clear() 'On vide le treeview
Dim N As XmlNode
N = X.DocumentElement
Dim Tn As New TreeNode(N.Name) '.Attributes("Text").Value)
Tn.Tag = 0
TreeView1.Nodes.Add(Tn) 'Ajout du 1er noeud
Tn = Nothing
Dim tNode As New TreeNode()
tNode = TreeView1.Nodes(0)
AddNode(X.DocumentElement, tNode)
TreeView1.ExpandAll()
End Sub

Important : pour des raisons esthétiques je ne veux pas afficher les
attributs des nodes dans le TreeView.

Question : comment faire, en cliquant sur un node, pour lister et
détailler les
attributs de ce node dans un MsgBox. Existe t'il un code pour faire ça ?

Merci à vous,

Estelle



Avatar
Merci Richard pour votre réponse.

Je crains hélas de ne pas tout bien saisir...

Voilà ce que j'ai fait : avec le code suivant, je récupère
la valeur des attributs dans une chaîne (AttributToTag ,
que je despliterai le moment venu) :

If (LeNode.Attributes IsNot Nothing) Then
For Each attribut As Xml.XmlAttribute In LeNode.Attributes
noBase.Nodes.Add(attribut.Value)
AttributToTag += attribut.Value
Next attribut
End If
noBase.Tag = AttributToTag

Mais je n'arrive pas à afficher MsgBox (AttributToTag) en
cliquant sur l'un des nodes ?

Auriez-vous une piste ?



"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

Un truc que j'utilise régulièrement: La prop Tag d'un TreeNode est un
object, donc tu peux y mettre ce que tu veux dedans. Par exemple:

Tn.Tag = N

Du coup, par la suite, tu peux récupérer toutes les infos :

Dim N as XmlNode = CType(Tn.Tag, XmlNode)

Bon y'a aussi la possibilité de dériver la classe TreeNode mais pour faire
rapide, ma solution marche bien.

--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Bonjour,

Grâce à la procédure ci-dessous trouvée sur vbfrance j'arrive à afficher
un fichier XML dans un TreeView .

Private Sub ChargeTreeView()
Dim X As New XmlDocument()
X.Load("c:Fichier.xml")
TreeView1.Nodes.Clear() 'On vide le treeview
Dim N As XmlNode
N = X.DocumentElement
Dim Tn As New TreeNode(N.Name) '.Attributes("Text").Value)
Tn.Tag = 0
TreeView1.Nodes.Add(Tn) 'Ajout du 1er noeud
Tn = Nothing
Dim tNode As New TreeNode()
tNode = TreeView1.Nodes(0)
AddNode(X.DocumentElement, tNode)
TreeView1.ExpandAll()
End Sub

Important : pour des raisons esthétiques je ne veux pas afficher les
attributs des nodes dans le TreeView.

Question : comment faire, en cliquant sur un node, pour lister et
détailler les
attributs de ce node dans un MsgBox. Existe t'il un code pour faire ça ?

Merci à vous,

Estelle






Avatar
Richard Clark
Le principe est de mettre dans la propriété Tag du TreeNode, non pas un
string ou un truc dans le genre, mais une référence vers l'object lui même.
Par exemple, imaginons que je remplisse un treeview de la sorte:

For Each pers as Personne in MaCollectionDePersonnes
Dim n as New TreeNode
n.Text = pers.Nom
n.Tag = pers
Next

Puis, quand je clique sur un TreeNode :

Dim nSelect as TreeNode = le TreeNode Selected
Dim pers as Personne = CType(nSelect.Tag, Personne)
MessageBox.Show(pers.Nom + pers.Prenom + pers.Age.ToString())


--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Merci Richard pour votre réponse.

Je crains hélas de ne pas tout bien saisir...

Voilà ce que j'ai fait : avec le code suivant, je récupère
la valeur des attributs dans une chaîne (AttributToTag ,
que je despliterai le moment venu) :

If (LeNode.Attributes IsNot Nothing) Then
For Each attribut As Xml.XmlAttribute In LeNode.Attributes
noBase.Nodes.Add(attribut.Value)
AttributToTag += attribut.Value
Next attribut
End If
noBase.Tag = AttributToTag

Mais je n'arrive pas à afficher MsgBox (AttributToTag) en
cliquant sur l'un des nodes ?

Auriez-vous une piste ?



"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

Un truc que j'utilise régulièrement: La prop Tag d'un TreeNode est un
object, donc tu peux y mettre ce que tu veux dedans. Par exemple:

Tn.Tag = N

Du coup, par la suite, tu peux récupérer toutes les infos :

Dim N as XmlNode = CType(Tn.Tag, XmlNode)

Bon y'a aussi la possibilité de dériver la classe TreeNode mais pour
faire
rapide, ma solution marche bien.

--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Bonjour,

Grâce à la procédure ci-dessous trouvée sur vbfrance j'arrive à afficher
un fichier XML dans un TreeView .

Private Sub ChargeTreeView()
Dim X As New XmlDocument()
X.Load("c:Fichier.xml")
TreeView1.Nodes.Clear() 'On vide le treeview
Dim N As XmlNode
N = X.DocumentElement
Dim Tn As New TreeNode(N.Name) '.Attributes("Text").Value)
Tn.Tag = 0
TreeView1.Nodes.Add(Tn) 'Ajout du 1er noeud
Tn = Nothing
Dim tNode As New TreeNode()
tNode = TreeView1.Nodes(0)
AddNode(X.DocumentElement, tNode)
TreeView1.ExpandAll()
End Sub

Important : pour des raisons esthétiques je ne veux pas afficher les
attributs des nodes dans le TreeView.

Question : comment faire, en cliquant sur un node, pour lister et
détailler les
attributs de ce node dans un MsgBox. Existe t'il un code pour faire ça ?

Merci à vous,

Estelle











Avatar
ça marche !

Maintenant, j'ai une dernière question...

Par exemple lefichierdesélèvesdelamaternelle.xml contient
une série de nodes qui contiennent les informations sur chacun
des élèves et contient également un node sur l'enseignent ainsi
qu'un node sur l'école.

Est il possible de n'afficher dans le treeview que les nodes de
chacun des élèves ?

D'avance merci !

Estelle



"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

Le principe est de mettre dans la propriété Tag du TreeNode, non pas un
string ou un truc dans le genre, mais une référence vers l'object lui
même.
Par exemple, imaginons que je remplisse un treeview de la sorte:

For Each pers as Personne in MaCollectionDePersonnes
Dim n as New TreeNode
n.Text = pers.Nom
n.Tag = pers
Next

Puis, quand je clique sur un TreeNode :

Dim nSelect as TreeNode = le TreeNode Selected
Dim pers as Personne = CType(nSelect.Tag, Personne)
MessageBox.Show(pers.Nom + pers.Prenom + pers.Age.ToString())


--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Merci Richard pour votre réponse.

Je crains hélas de ne pas tout bien saisir...

Voilà ce que j'ai fait : avec le code suivant, je récupère
la valeur des attributs dans une chaîne (AttributToTag ,
que je despliterai le moment venu) :

If (LeNode.Attributes IsNot Nothing) Then
For Each attribut As Xml.XmlAttribute In LeNode.Attributes
noBase.Nodes.Add(attribut.Value)
AttributToTag += attribut.Value
Next attribut
End If
noBase.Tag = AttributToTag

Mais je n'arrive pas à afficher MsgBox (AttributToTag) en
cliquant sur l'un des nodes ?

Auriez-vous une piste ?



"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

Un truc que j'utilise régulièrement: La prop Tag d'un TreeNode est un
object, donc tu peux y mettre ce que tu veux dedans. Par exemple:

Tn.Tag = N

Du coup, par la suite, tu peux récupérer toutes les infos :

Dim N as XmlNode = CType(Tn.Tag, XmlNode)

Bon y'a aussi la possibilité de dériver la classe TreeNode mais pour
faire
rapide, ma solution marche bien.

--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Bonjour,

Grâce à la procédure ci-dessous trouvée sur vbfrance j'arrive à
afficher
un fichier XML dans un TreeView .

Private Sub ChargeTreeView()
Dim X As New XmlDocument()
X.Load("c:Fichier.xml")
TreeView1.Nodes.Clear() 'On vide le treeview
Dim N As XmlNode
N = X.DocumentElement
Dim Tn As New TreeNode(N.Name) '.Attributes("Text").Value)
Tn.Tag = 0
TreeView1.Nodes.Add(Tn) 'Ajout du 1er noeud
Tn = Nothing
Dim tNode As New TreeNode()
tNode = TreeView1.Nodes(0)
AddNode(X.DocumentElement, tNode)
TreeView1.ExpandAll()
End Sub

Important : pour des raisons esthétiques je ne veux pas afficher les
attributs des nodes dans le TreeView.

Question : comment faire, en cliquant sur un node, pour lister et
détailler les
attributs de ce node dans un MsgBox. Existe t'il un code pour faire ça
?

Merci à vous,

Estelle














Avatar
Richard Clark
ben ca c'est à ton code de le faire ;-)


--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:%
ça marche !

Maintenant, j'ai une dernière question...

Par exemple lefichierdesélèvesdelamaternelle.xml contient
une série de nodes qui contiennent les informations sur chacun
des élèves et contient également un node sur l'enseignent ainsi
qu'un node sur l'école.

Est il possible de n'afficher dans le treeview que les nodes de
chacun des élèves ?

D'avance merci !

Estelle



"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

Le principe est de mettre dans la propriété Tag du TreeNode, non pas un
string ou un truc dans le genre, mais une référence vers l'object lui
même.
Par exemple, imaginons que je remplisse un treeview de la sorte:

For Each pers as Personne in MaCollectionDePersonnes
Dim n as New TreeNode
n.Text = pers.Nom
n.Tag = pers
Next

Puis, quand je clique sur un TreeNode :

Dim nSelect as TreeNode = le TreeNode Selected
Dim pers as Personne = CType(nSelect.Tag, Personne)
MessageBox.Show(pers.Nom + pers.Prenom + pers.Age.ToString())


--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Merci Richard pour votre réponse.

Je crains hélas de ne pas tout bien saisir...

Voilà ce que j'ai fait : avec le code suivant, je récupère
la valeur des attributs dans une chaîne (AttributToTag ,
que je despliterai le moment venu) :

If (LeNode.Attributes IsNot Nothing) Then
For Each attribut As Xml.XmlAttribute In LeNode.Attributes
noBase.Nodes.Add(attribut.Value)
AttributToTag += attribut.Value
Next attribut
End If
noBase.Tag = AttributToTag

Mais je n'arrive pas à afficher MsgBox (AttributToTag) en
cliquant sur l'un des nodes ?

Auriez-vous une piste ?



"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

Un truc que j'utilise régulièrement: La prop Tag d'un TreeNode est un
object, donc tu peux y mettre ce que tu veux dedans. Par exemple:

Tn.Tag = N

Du coup, par la suite, tu peux récupérer toutes les infos :

Dim N as XmlNode = CType(Tn.Tag, XmlNode)

Bon y'a aussi la possibilité de dériver la classe TreeNode mais pour
faire
rapide, ma solution marche bien.

--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Bonjour,

Grâce à la procédure ci-dessous trouvée sur vbfrance j'arrive à
afficher
un fichier XML dans un TreeView .

Private Sub ChargeTreeView()
Dim X As New XmlDocument()
X.Load("c:Fichier.xml")
TreeView1.Nodes.Clear() 'On vide le treeview
Dim N As XmlNode
N = X.DocumentElement
Dim Tn As New TreeNode(N.Name) '.Attributes("Text").Value)
Tn.Tag = 0
TreeView1.Nodes.Add(Tn) 'Ajout du 1er noeud
Tn = Nothing
Dim tNode As New TreeNode()
tNode = TreeView1.Nodes(0)
AddNode(X.DocumentElement, tNode)
TreeView1.ExpandAll()
End Sub

Important : pour des raisons esthétiques je ne veux pas afficher les
attributs des nodes dans le TreeView.

Question : comment faire, en cliquant sur un node, pour lister et
détailler les
attributs de ce node dans un MsgBox. Existe t'il un code pour faire ça
?

Merci à vous,

Estelle


















Avatar
Le code VB ou le code XML ?

"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

ben ca c'est à ton code de le faire ;-)


--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:%
ça marche !

Maintenant, j'ai une dernière question...

Par exemple lefichierdesélèvesdelamaternelle.xml contient
une série de nodes qui contiennent les informations sur chacun
des élèves et contient également un node sur l'enseignent ainsi
qu'un node sur l'école.

Est il possible de n'afficher dans le treeview que les nodes de
chacun des élèves ?

D'avance merci !

Estelle



"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

Le principe est de mettre dans la propriété Tag du TreeNode, non pas un
string ou un truc dans le genre, mais une référence vers l'object lui
même.
Par exemple, imaginons que je remplisse un treeview de la sorte:

For Each pers as Personne in MaCollectionDePersonnes
Dim n as New TreeNode
n.Text = pers.Nom
n.Tag = pers
Next

Puis, quand je clique sur un TreeNode :

Dim nSelect as TreeNode = le TreeNode Selected
Dim pers as Personne = CType(nSelect.Tag, Personne)
MessageBox.Show(pers.Nom + pers.Prenom + pers.Age.ToString())


--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Merci Richard pour votre réponse.

Je crains hélas de ne pas tout bien saisir...

Voilà ce que j'ai fait : avec le code suivant, je récupère
la valeur des attributs dans une chaîne (AttributToTag ,
que je despliterai le moment venu) :

If (LeNode.Attributes IsNot Nothing) Then
For Each attribut As Xml.XmlAttribute In LeNode.Attributes
noBase.Nodes.Add(attribut.Value)
AttributToTag += attribut.Value
Next attribut
End If
noBase.Tag = AttributToTag

Mais je n'arrive pas à afficher MsgBox (AttributToTag) en
cliquant sur l'un des nodes ?

Auriez-vous une piste ?



"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

Un truc que j'utilise régulièrement: La prop Tag d'un TreeNode est un
object, donc tu peux y mettre ce que tu veux dedans. Par exemple:

Tn.Tag = N

Du coup, par la suite, tu peux récupérer toutes les infos :

Dim N as XmlNode = CType(Tn.Tag, XmlNode)

Bon y'a aussi la possibilité de dériver la classe TreeNode mais pour
faire
rapide, ma solution marche bien.

--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Bonjour,

Grâce à la procédure ci-dessous trouvée sur vbfrance j'arrive à
afficher
un fichier XML dans un TreeView .

Private Sub ChargeTreeView()
Dim X As New XmlDocument()
X.Load("c:Fichier.xml")
TreeView1.Nodes.Clear() 'On vide le treeview
Dim N As XmlNode
N = X.DocumentElement
Dim Tn As New TreeNode(N.Name) '.Attributes("Text").Value)
Tn.Tag = 0
TreeView1.Nodes.Add(Tn) 'Ajout du 1er noeud
Tn = Nothing
Dim tNode As New TreeNode()
tNode = TreeView1.Nodes(0)
AddNode(X.DocumentElement, tNode)
TreeView1.ExpandAll()
End Sub

Important : pour des raisons esthétiques je ne veux pas afficher les
attributs des nodes dans le TreeView.

Question : comment faire, en cliquant sur un node, pour lister et
détailler les
attributs de ce node dans un MsgBox. Existe t'il un code pour faire
ça ?

Merci à vous,

Estelle





















Avatar
Ma dernière question est-elle débile pour susciter si peu de réaction ? :((

Si c'est le cas, je m'en excuse mais comme beaucoup, je débute avec VB
express et XML et je suis par ailleurs entièrement autodidacte en
informatique.
Certaines considérations purement informaticienne me sont totalement
étrangères (dérivation de classe p.e) mais cela ne m'empêche pas de
trouver une grande satisfaction à ce que je fais.

J'apprends donc en tâtonnant beaucoup à partir des exemples de codes que
je trouve ici ou là, d'où ma demande que je complète et reformule :

Je cherche des pistes ou des exemples de codes (VB, XML ou autres ?)
permettant
de gérer l'apparence du TreeView lors de son chargement à partir du fichier
XML.

Par exemple :

1 : n'afficher que certains nodes et pas d'autres.
2 : Collapser certains nodes et pas d'autres
3 : Expander certains nodes et pas d'autres
4 : placer le focus sur tel ou tel node

Merci infiniment pour votre attention,

Estelle

a écrit dans le message de news:

Le code VB ou le code XML ?

"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

ben ca c'est à ton code de le faire ;-)


--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:%
ça marche !

Maintenant, j'ai une dernière question...

Par exemple lefichierdesélèvesdelamaternelle.xml contient
une série de nodes qui contiennent les informations sur chacun
des élèves et contient également un node sur l'enseignent ainsi
qu'un node sur l'école.

Est il possible de n'afficher dans le treeview que les nodes de
chacun des élèves ?

D'avance merci !

Estelle



"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

Le principe est de mettre dans la propriété Tag du TreeNode, non pas un
string ou un truc dans le genre, mais une référence vers l'object lui
même.
Par exemple, imaginons que je remplisse un treeview de la sorte:

For Each pers as Personne in MaCollectionDePersonnes
Dim n as New TreeNode
n.Text = pers.Nom
n.Tag = pers
Next

Puis, quand je clique sur un TreeNode :

Dim nSelect as TreeNode = le TreeNode Selected
Dim pers as Personne = CType(nSelect.Tag, Personne)
MessageBox.Show(pers.Nom + pers.Prenom + pers.Age.ToString())


--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Merci Richard pour votre réponse.

Je crains hélas de ne pas tout bien saisir...

Voilà ce que j'ai fait : avec le code suivant, je récupère
la valeur des attributs dans une chaîne (AttributToTag ,
que je despliterai le moment venu) :

If (LeNode.Attributes IsNot Nothing) Then
For Each attribut As Xml.XmlAttribute In LeNode.Attributes
noBase.Nodes.Add(attribut.Value)
AttributToTag += attribut.Value
Next attribut
End If
noBase.Tag = AttributToTag

Mais je n'arrive pas à afficher MsgBox (AttributToTag) en
cliquant sur l'un des nodes ?

Auriez-vous une piste ?



"Richard Clark" <rc at c2i.fr> a écrit dans le message de news:

Un truc que j'utilise régulièrement: La prop Tag d'un TreeNode est un
object, donc tu peux y mettre ce que tu veux dedans. Par exemple:

Tn.Tag = N

Du coup, par la suite, tu peux récupérer toutes les infos :

Dim N as XmlNode = CType(Tn.Tag, XmlNode)

Bon y'a aussi la possibilité de dériver la classe TreeNode mais pour
faire
rapide, ma solution marche bien.

--
Richard Clark
http://www.c2i.fr Le 1er site .NET
http://www.project-hoshimi.com
a écrit dans le message de
news:
Bonjour,

Grâce à la procédure ci-dessous trouvée sur vbfrance j'arrive à
afficher
un fichier XML dans un TreeView .

Private Sub ChargeTreeView()
Dim X As New XmlDocument()
X.Load("c:Fichier.xml")
TreeView1.Nodes.Clear() 'On vide le treeview
Dim N As XmlNode
N = X.DocumentElement
Dim Tn As New TreeNode(N.Name) '.Attributes("Text").Value)
Tn.Tag = 0
TreeView1.Nodes.Add(Tn) 'Ajout du 1er noeud
Tn = Nothing
Dim tNode As New TreeNode()
tNode = TreeView1.Nodes(0)
AddNode(X.DocumentElement, tNode)
TreeView1.ExpandAll()
End Sub

Important : pour des raisons esthétiques je ne veux pas afficher les
attributs des nodes dans le TreeView.

Question : comment faire, en cliquant sur un node, pour lister et
détailler les
attributs de ce node dans un MsgBox. Existe t'il un code pour faire
ça ?

Merci à vous,

Estelle