voila mon probleme : je voudrais remplir un treeview par une fonction
appellée das un nouveau thread. le probleme c'est que ça bloque lors de
l'ajout du premier node et que le treeview n'est jamair rempli. J'ai essayé
avec BeginInvoque et c'est pareil.
Pourtant,la meme fonction se passe bien si je veux remplir une listbox.
C'est quoi l'astuce ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Mathieu Francesch
Bonsoir Pierre,
Je vous ai fait un petit exemple de code qui j'espère répondra à vos questions.
###################################################### Public Class Form1
Delegate Sub SetTreeViewCallback() Private t1 As Thread = Nothing
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click t1 = New Thread(New ThreadStart(AddressOf AppelRemplissageTreeview)) t1.Start() End Sub
Sub AppelRemplissageTreeview() RemplissageTreeview() End Sub
Sub RemplissageTreeview() If TreeView1.InvokeRequired Then Dim MyTree As New SetTreeViewCallback(AddressOf RemplissageTreeview) Invoke(MyTree) Else TreeView1.BeginUpdate() TreeView1.Nodes.Add("Papa") TreeView1.Nodes(0).Nodes.Add("Enfant 1") TreeView1.Nodes(0).Nodes.Add("Enfant 2") TreeView1.Nodes(0).Nodes(1).Nodes.Add("Petit Enfant 1") TreeView1.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("Arrière petit enfant 1") TreeView1.EndUpdate() End If End Sub
End Class ################################################
Pour plus d'informations sur les appels de Thread au travers les différents contrôles de Windows Form, je vous invite à vous documenter à l'addresse suivante :
voila mon probleme : je voudrais remplir un treeview par une fonction appellée das un nouveau thread. le probleme c'est que ça bloque lors de l'ajout du premier node et que le treeview n'est jamair rempli. J'ai essayé avec BeginInvoque et c'est pareil. Pourtant,la meme fonction se passe bien si je veux remplir une listbox. C'est quoi l'astuce ?
Bonsoir Pierre,
Je vous ai fait un petit exemple de code qui j'espère répondra à vos
questions.
######################################################
Public Class Form1
Delegate Sub SetTreeViewCallback()
Private t1 As Thread = Nothing
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
t1 = New Thread(New ThreadStart(AddressOf AppelRemplissageTreeview))
t1.Start()
End Sub
Sub AppelRemplissageTreeview()
RemplissageTreeview()
End Sub
Sub RemplissageTreeview()
If TreeView1.InvokeRequired Then
Dim MyTree As New SetTreeViewCallback(AddressOf
RemplissageTreeview)
Invoke(MyTree)
Else
TreeView1.BeginUpdate()
TreeView1.Nodes.Add("Papa")
TreeView1.Nodes(0).Nodes.Add("Enfant 1")
TreeView1.Nodes(0).Nodes.Add("Enfant 2")
TreeView1.Nodes(0).Nodes(1).Nodes.Add("Petit Enfant 1")
TreeView1.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("Arrière petit
enfant 1")
TreeView1.EndUpdate()
End If
End Sub
End Class
################################################
Pour plus d'informations sur les appels de Thread au travers les différents
contrôles de Windows Form, je vous invite à vous documenter à l'addresse
suivante :
voila mon probleme : je voudrais remplir un treeview par une fonction
appellée das un nouveau thread. le probleme c'est que ça bloque lors de
l'ajout du premier node et que le treeview n'est jamair rempli. J'ai essayé
avec BeginInvoque et c'est pareil.
Pourtant,la meme fonction se passe bien si je veux remplir une listbox.
C'est quoi l'astuce ?
Je vous ai fait un petit exemple de code qui j'espère répondra à vos questions.
###################################################### Public Class Form1
Delegate Sub SetTreeViewCallback() Private t1 As Thread = Nothing
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click t1 = New Thread(New ThreadStart(AddressOf AppelRemplissageTreeview)) t1.Start() End Sub
Sub AppelRemplissageTreeview() RemplissageTreeview() End Sub
Sub RemplissageTreeview() If TreeView1.InvokeRequired Then Dim MyTree As New SetTreeViewCallback(AddressOf RemplissageTreeview) Invoke(MyTree) Else TreeView1.BeginUpdate() TreeView1.Nodes.Add("Papa") TreeView1.Nodes(0).Nodes.Add("Enfant 1") TreeView1.Nodes(0).Nodes.Add("Enfant 2") TreeView1.Nodes(0).Nodes(1).Nodes.Add("Petit Enfant 1") TreeView1.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("Arrière petit enfant 1") TreeView1.EndUpdate() End If End Sub
End Class ################################################
Pour plus d'informations sur les appels de Thread au travers les différents contrôles de Windows Form, je vous invite à vous documenter à l'addresse suivante :
voila mon probleme : je voudrais remplir un treeview par une fonction appellée das un nouveau thread. le probleme c'est que ça bloque lors de l'ajout du premier node et que le treeview n'est jamair rempli. J'ai essayé avec BeginInvoque et c'est pareil. Pourtant,la meme fonction se passe bien si je veux remplir une listbox. C'est quoi l'astuce ?
Mathieu Francesch
Re bonsoir,
J'ai simplifier un peu le code pour qu'il soit plus facile à lire :
######################################################## Public Class Form1
Delegate Sub SetTreeViewCallback() Private t1 As Thread = Nothing
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click t1 = New Thread(New ThreadStart(AddressOf RemplissageTreeview)) t1.Start() End Sub
Sub RemplissageTreeview() If TreeView1.InvokeRequired Then Dim MyTree As New SetTreeViewCallback(AddressOf RemplissageTreeview) Invoke(MyTree) Else TreeView1.BeginUpdate() TreeView1.Nodes.Add("Papa") TreeView1.Nodes(0).Nodes.Add("Enfant 1") TreeView1.Nodes(0).Nodes.Add("Enfant 2") TreeView1.Nodes(0).Nodes(1).Nodes.Add("Petit Enfant 1") TreeView1.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("Arrière petit enfant 1") TreeView1.EndUpdate() End If End Sub
voila mon probleme : je voudrais remplir un treeview par une fonction appellée das un nouveau thread. le probleme c'est que ça bloque lors de l'ajout du premier node et que le treeview n'est jamair rempli. J'ai essayé avec BeginInvoque et c'est pareil. Pourtant,la meme fonction se passe bien si je veux remplir une listbox. C'est quoi l'astuce ?
Re bonsoir,
J'ai simplifier un peu le code pour qu'il soit plus facile à lire :
########################################################
Public Class Form1
Delegate Sub SetTreeViewCallback()
Private t1 As Thread = Nothing
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
t1 = New Thread(New ThreadStart(AddressOf RemplissageTreeview))
t1.Start()
End Sub
Sub RemplissageTreeview()
If TreeView1.InvokeRequired Then
Dim MyTree As New SetTreeViewCallback(AddressOf
RemplissageTreeview)
Invoke(MyTree)
Else
TreeView1.BeginUpdate()
TreeView1.Nodes.Add("Papa")
TreeView1.Nodes(0).Nodes.Add("Enfant 1")
TreeView1.Nodes(0).Nodes.Add("Enfant 2")
TreeView1.Nodes(0).Nodes(1).Nodes.Add("Petit Enfant 1")
TreeView1.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("Arrière petit
enfant 1")
TreeView1.EndUpdate()
End If
End Sub
voila mon probleme : je voudrais remplir un treeview par une fonction
appellée das un nouveau thread. le probleme c'est que ça bloque lors de
l'ajout du premier node et que le treeview n'est jamair rempli. J'ai essayé
avec BeginInvoque et c'est pareil.
Pourtant,la meme fonction se passe bien si je veux remplir une listbox.
C'est quoi l'astuce ?
J'ai simplifier un peu le code pour qu'il soit plus facile à lire :
######################################################## Public Class Form1
Delegate Sub SetTreeViewCallback() Private t1 As Thread = Nothing
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click t1 = New Thread(New ThreadStart(AddressOf RemplissageTreeview)) t1.Start() End Sub
Sub RemplissageTreeview() If TreeView1.InvokeRequired Then Dim MyTree As New SetTreeViewCallback(AddressOf RemplissageTreeview) Invoke(MyTree) Else TreeView1.BeginUpdate() TreeView1.Nodes.Add("Papa") TreeView1.Nodes(0).Nodes.Add("Enfant 1") TreeView1.Nodes(0).Nodes.Add("Enfant 2") TreeView1.Nodes(0).Nodes(1).Nodes.Add("Petit Enfant 1") TreeView1.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("Arrière petit enfant 1") TreeView1.EndUpdate() End If End Sub
voila mon probleme : je voudrais remplir un treeview par une fonction appellée das un nouveau thread. le probleme c'est que ça bloque lors de l'ajout du premier node et que le treeview n'est jamair rempli. J'ai essayé avec BeginInvoque et c'est pareil. Pourtant,la meme fonction se passe bien si je veux remplir une listbox. C'est quoi l'astuce ?