25. oktober 2008 - 00:48Der er
6 kommentarer og 1 løsning
Endnu et TreeView - Tilføj node under existerende node
Hej eksperter...
Jeg er helt ny i C# og jeg har lavet et TreeView, som lister mine dreve og det virker fint. Jeg har fundet et script der lister hele ens harddisk med det samme, men det tager jo en krig, så jeg følger Windows Modellen, men at man loader første level af noder og hvis jeg skal ind under en node mere, så opdatere man "on-the-go".
Hvordan putter jeg min nye fundne node ind under den eksisterende node, jeg har i forvejen?
Et TreeNode object har også childNodes, som er en collection af TreeNodes.. så du kan bare appende et nyt TreeNode element til den Node du vil tilføje noget under.
Jeg har gjort et forsøg, hvor jeg nedarver DirectoryTreeNode fra TreeNode og bygger træet dynamisk i en BeforeExpand. Hvis en mappe har undermapper, indsætter jeg i første omgang en dummy node, og umiddelbart før den "ekspanderes", tilføjes de rigtige undermapper. DirectoryTreeNode bruges til at holde styr på hvilken node der hører til hvilken mappe.
Jeg ved ikke om det vil være mere rigtigt at bruge noget data binding?
Der kommer nogle exceptions når jeg kører det på min maskine - dem ignorerer jeg bare, men du skal nok kigge nærmere på dem..
public partial class Form1 : Form { private enum LoadType { AddSubDirs, AddDummyNode };
public Form1() { InitializeComponent(); treeView1.BeforeExpand += new TreeViewCancelEventHandler(treeView1_BeforeExpand); LoadRootLevel(); }
private void LoadRootLevel() { foreach (DriveInfo drive in DriveInfo.GetDrives()) { DirectoryInfo dir = new DirectoryInfo(drive.Name); DirectoryInfoTreeNode dirNode = new DirectoryInfoTreeNode(dir); treeView1.Nodes.Add(dirNode); LoadSubDirectories(dirNode,LoadType.AddDummyNode); } }
Det virker fino, kunne dog godt tænke mig, at den havde "Skrivebordet" i toppen af Tree'et. Nogle idéer? Du skal nok få lidt flere points, hvis du vil.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.