private void CArbreConsultationHierarchique_BeforeExpand(object sender, TreeViewCancelEventArgs e) { using (sc2i.win32.common.CWaitCursor waiter = new sc2i.win32.common.CWaitCursor()) { TreeNode node = e.Node; if (node.Nodes.Count == 1 && node.Nodes[0].Tag == null) { node.Nodes.Clear(); CNodeConsultationHierarchique data = node.Tag as CNodeConsultationHierarchique; IObjetDonneeAutoReference objetAutoRef = data.ObjetLie as IObjetDonneeAutoReference; CFolderConsultationFolder folderParent = null; folderParent = ((CNodeConsultationHierarchique)node.Tag).Folder as CFolderConsultationFolder; if (objetAutoRef != null && (folderParent == null)) { string strProp = objetAutoRef.ProprieteListeFils; PropertyInfo prop = objetAutoRef.GetType().GetProperty(strProp); if (prop != null) { MethodInfo methode = prop.GetGetMethod(); if (methode != null) { CListeObjetsDonnees listeFils = methode.Invoke(objetAutoRef, new object[0]) as CListeObjetsDonnees; if (listeFils != null) { foreach (CObjetDonnee objet in listeFils) { CNodeConsultationHierarchique dataFils = new CNodeConsultationHierarchique( objet, data.Folder, node.Tag as CNodeConsultationHierarchique); TreeNode newNode = CreateNode(dataFils); node.Nodes.Add(newNode); } } } } } foreach (CFolderConsultationHierarchique folderFils in data.Folder.SousFolders) { CreateNodes(data.ObjetLie, folderFils, node); } } } }