begin process at 2012 02 14 17:30:31
  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

remplissage et parcour treeview [ par ammoun482 ] bjr lé amis jsui une débutante en vb.net.je veux creer un treeview avec dé informations saisi par l'utisateur .En effet chaque information récupérée d affecter un evénement a un noeud dun treeview [ par ammoun482 ] bsoir tt le monde Je ve savoir commen jpe affecter un evénement à un noeud dans un treeview.par exemple kon on clik sur 1 noued pér ou mém ses fils du TreeView - Comment choisir un item dans la liste ? [ par Cataclymse ] Bonjour à tous, J'ai crée un petit jeu et j'ai besoin qu'il sauvegarde des données sur un FTP ou sur un SQl. Donc j'ai crée une form avec une connexi remplissage de Combo avec colonne dynamique [ par chikitinbulgroz ] Bonjour à tous, J'ai vu qu'il y a mille moyens d'alimenter un Combo avec une colonne quelconque, mais si cette colonne change de place (une fois A, u Async + STA Thread State [ par MiharbiDoNo ] Bonjour, pendant que j'utilise un tcpclient, avec les methodes async BeginRead, BeginWrite, je veux acceder au Clipboard, ce qui est impossible, car l Deux thread dans le même objet (problème lors de la déstruction de mon objet) [ par Polack77 ] Bonjour [^^happy13], Je suis débutant en multithreading et un détail (qui m'embête beaucoup) me pose problème : J'améliore en ce moment une classe Jo Remplissage tableaux a partir d'un datareader sql [ par Nitrakz ] Bonjour, Tout est dans le titre, Je voudrais savoir si il serait possible de remplir directement un tableaux de type tab()() à partir d'une requête Passage excel 2003 à 2007 : TREEVIEW ne fonctionne plus [ par vampirius666 ] Bonjours à tous ! J'apprécie énormément les forums sur internet grâce auxquels j'ai réussi pleins de truc en VB. Notamment un super tableur avec un t treeview et filtre de formulaire [ par santacrus ] Bonjour a tous, Je suis obligé de m'en remettre a vous car la je galere vraiment de trop! Mon form principal contient un treeview. Mon 2ème form cont Problème affichage icone dans TreeView sous XP [ par fiko81 ] Bonsoir à tous, Je travail sous Visual Studio 2005. J'ai un TreeView dans mon application qui est lié avec une ImageList. L'ImageList est remplié dyn


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 3,557 sec (3)

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