begin process at 2010 02 10 01:13:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

Remplissage d'un TreeView par un thread


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Remplissage d'un TreeView par un thread

mardi 8 février 2005 à 09:21:24 | Remplissage d'un TreeView par un thread

ofeelfree

Membre Club
Bonjour,

Voici mon problème : j'ai un formulaire qui contient un TreeView, et une méthode qui remplit ce TreeView avec la liste des ordinateurs d'un domaine.
Ça fonctionne mais quand le domaine est important l'appli est bloquée pendant un moment. J'ai donc créé un thread secondaire qui lance la méthode. Mais apparemment je ne peux pas mettre à jour le TreeView à partir du thread secondaire. Ça me dit : "vous devez utiliser Control.Invoke ou Control.BeginInvoke...).

Voici le code :

Public Class frmMain

   Inherits System.Windows.Forms.Form

   Friend WithEvents tvMain as TreeView
   Friend WithEvents btnGo as Button
[...]
   Private Sub btnGo_Click(ByVal sender as Object, ByVal e as EventArgs) Handles btnGo.Click
      Dim t As New Thread(AddressOf Me.Scan)
      t.Start()
   End Sub

   Private Sub Scan()
      For Each [Computer] In [Domain]
         Me.tvMain.Nodes.Add(New TreeNode([Computer].Name))
      Next [Computer]
   End Sub

End Class


Quelqu'un aurait-il une piste, ou même un lien vers une source qui traiterait d'un problème similaire ?

Merci d'avance. :)
mardi 8 février 2005 à 19:50:45 | Re : Remplissage d'un TreeView par un thread

ofeelfree

Membre Club
Réponse acceptée !
Rebonjour,
J'ai trouvé la solution, je la livre pour ceux que ça intéresse (les ajouts sont en bleu, ce qui a été retiré en rouge) :

Public Class frmMain

   Inherits System.Windows.Forms.Form

   Private Delegate Sub AddTreeDelegate(ByRef Target as Object, ByRef Node as TreeNode)

   Friend WithEvents tvMain as TreeView
   Friend WithEvents btnGo as Button
[...]
   Private Sub btnGo_Click(ByVal sender as Object, ByVal e as EventArgs) Handles btnGo.Click
      Dim t As New Thread(AddressOf Me.Scan)
      t.Start()
   End Sub

   Private Sub AddTreeNode(ByRef Target as Object, ByRef Node as TreeNode)
      If (TypeOf Target Is TreeView) Then
         DirectCast(Target, TreeView).Nodes.Add(Node)
      ElseIf (TypeOf Target Is TreeNode) Then
         DirectCast(Target, TreeNode).Nodes.Add(Node)
      End If
   End Sub


   Private Sub Scan()
      Dim atd As New AddTreeDelegate(AddressOf Me.AddTreeNode)
      Dim args(1) as Object

      For Each [Computer] In [Domain]
         'Me.tvMain.Nodes.Add(New TreeNode([Computer].Name))
         args(0) = Me.tvMain
         args(1) = New TreeNode([Computer].Name)
         Me.tvMain.BeginInvoke(atd, args)
      Next [Computer]
   End Sub

End Class


Et voilà, à présent le TreeView se remplit au fur et à mesure et l'application reste disponible pour répondre aux événements.

Bon code à tous.


Cette discussion est classée dans : treeview, thread, remplissage, btngo, computer


Répondre à ce message

Sujets en rapport avec ce message

URGENT : Outil remplissage [ par Jo Ace ] Comment simuler l'outil de remplissage (pot de peinture) qu'il y a dans Paint ??Merci de me répondre rapidement. Drag Drop dans un Treeview [ par aheudes ] Comment programmer le déplacement d'un node dans un treeview par une opération dragdrop.Par avance, merci Drag Drop dans un Treeview [ par aheudes ] Comment programmer le déplacement d'un node dans un treeview par une opération dragdrop (pour changer le parent du node dans la hiérarchie).Par avance Pbe de remplissage de zones... [ par DDSP35 ] Help!! URGENTje cherche la solution pour remplir des zones(formes libres) dans un pictureboxavec différentes couleurs.Merci. mettre la main sur un #@$£!! de thread... [ par Grib ] Voila, ma feuille Excel a des remote links (fonctions d'un Add-in Bloomberg) que je veux mettre a jour quand je l'ouvre, puis je veux sauver et fermer Connaître le scrollMax d'un contrôle Treeview [ par stephane ] Pour mon application, je met en place une routine pour imprimer la totalité d'un treeview. Pour cela, je fais défilier le treeview à l'aide de l'api s Arborescence des dossiers dans TreeView [ par mulo ] J'aurais besoin de selectionner et de récupérer le nom d'un dossier dans une arborescence. Les commonDialog ne permettent apparemment pas de le faire nodecheck et treeview [ par olivier ] comment gerer le nodecheck d'un treeview j'ai essayer et ca plante le check d'une check boxe du treeview ne fonctionne pas quuququ unn peut'il m'aider


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,203 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales