Witam.
Visual C# Express Edition 2008.
Stworzyłem sobie treeView z drzewem napędów i folderów. Działa to mniej więcej tak, że najpierw odczytuję z biblioteki shell32.dll listę ikon 16x16 i wypełniam nimi imageList, łączę tą listę z treeView, , tworzę gotowe nody dla napędów hdd, CD i fdd. Następnie odczytuję listę napędów (GetLogicalDrives), sprawdzam rodzaj każdego i wypełniam nimi treeview. Odczytuję zdarzenie treeView1_AfterSelect, a w nim odczytuję listę folderów dla danego napędu (GetDirectories), następnie (wszystko to robię w zdarzeniu AfterSelect) w pętli "wyciągam" z każdej pozycji samą nazwę folderu (Path.GetFileName), podstawiam tak wyciągniętą nazwę do TreeNode, i tak przygotowany node dodaję do listy nodów w treeView. Na koniec rozwijam zaznaczonego Noda (SelectedNode.Expand). Niby wszystko pięknie działa, ale... właśnie. Jest jedno ale.. Otóż dzieje się coś takiego, że.. Klikam na napędzie... Rozwija się gałąź z folderami. Jest OK. Następnie klikam gdzie indziej, i jak ponownie kliknę na tym napędzie, to on mi ponownie dodaje te same foldery. Każde kolejne zdeaktywowanie noda i jego ponowne kliknięcie powoduje ponowne dodanie folderów, które już są na liście. Gdzie robię błąd?
Próbowałem użyć metod Contains i Find do sprawdzenia, czy dany Node już istnieje, ale bez względu, co bym nie podstawiał za ich parametry, to mi po prostu nie działa.
I jeszcze jedno. Dopóki nie kliknę na jakimś folderze i nie rozwinę jego podfolderów, nie mam przy nim plusa. Jaki jest najprostszy i najszybszy (w sensie działania, a nie programowania) sposób na dodanie plusów folderom, które mają podfoldery?
P.S. A może istnieje gotowy darmowy komponent, który można doinstalować do VC#EE, i który wystarczy wciągnąć na formatkę? Piszę sobie ciut większy program, a rozkładam się na takich drobiazgach :( Istnieje taki pakiet SHell Mega Pack.NET. Tam jest kilka takich komponentów, ale niestety jest płatny.