wisen-> controllerne i PP kunne så vidt jeg kunne se kun vise enten filer eller foldere. Jeg har brug for begge i samme vindue. Så jeg har lavet mine egne extensions af TreeNode klassen, men source koden til PP var en stor hjælp til dette.
Til dette brugte jeg FileInfo og DirectoryInfo som finger foreslog. nu skal jeg bare kunne skelne mellem directories og files når jeg hiver dem ud af træet.
her har jeg tænkt mig at lave en abstrakt klasse som ken indeholde denne information
Kode
FileNodes:
public class FileTreeNode : TreeNode { FileInfo file;
public FileTreeNode(FileInfo fi) { this.Text=fi.Name; file = fi; }
public FileInfo File { get {return file;} set {file = value;} }
public bool IsDirectory { get {return false;}
} }
Directory Nodes:
public class DirectoryTreeNode : TreeNode { DirectoryInfo directory;
public DirectoryTreeNode(DirectoryInfo dir) { this.Text=dir.Name; directory = dir; }
public DirectoryTreeNode(DirectoryInfo dir, TreeNode[]children) { this.Text = dir.Name; foreach(TreeNode tn in children) { this.Nodes.Add(tn); } directory = dir; }
public DirectoryInfo Directory { get {return directory;} set {directory = value;} }
public bool IsDirectory { get {return true;}
} }
udsnit af constructor til programmet, her genereres træet
DirectoryInfo di = new DirectoryInfo("C:\\"); DirectoryInfo[]dirs = di.GetDirectories(); //string[]dirs = Directory.GetDirectories("C:\\"); for (int i=0; i<dirs.Length; i++) { DirectoryInfo temp = dirs[i]; DirectoryInfo di2 = new DirectoryInfo(dirs[i].FullName); FileInfo[]files = di2.GetFiles(); FileTreeNode[]children = new FileTreeNode[files.Length]; for(int j=0 ; j<files.Length ; j++) { children[j] = new FileTreeNode(files[j]); } DirectoryTreeNode dtn = new DirectoryTreeNode(dirs[i],children); treeView1.Nodes.Add(dtn); }
dette er tilsyneladende ikke muligt i et TreeView/TreeNode som skal have en string. skulle have været.
jeg vil gerne gemme alle oplysninger om filer/directories i træet, ikke kun navnet. dette er tilsyneladende ikke muligt i et TreeView/TreeNode som skal have en string.
men dette problem har jeg løst ved at lave en extension til TreeNode
du har ret. Der er en property som hedder Tag som kan indeholder et object. ikke et videre passende navn syns jeg men ok. havde også ledt efter denne funktionalitet men har overset det. det kan så afløse mine nedarvede klasser
ja ikke et så heldigt navn... Ja det kan sagtens afløse dine nedarvede klasser. du kan jo bare smide en FileInfo eller DirInfo instans ind i Tag og så chekke på typen når du skal have det ud igen
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.