treeview的源代码
点击次数:31 次 发布日期:2008-11-26 17:39:04 作者:源代码网
|
using System.Windows.Forms; using System.Drawing; using System.ComponentModel; using System.IO; class FolderDialog:Form { TreeView FolderTree; ImageList FolderTreeIcons; TreeNode RootNode; string[] IconFileNames={"MyComp.ico","Drive.ico","OpenFold.ico","ClsdFold.ico"}; public FolderDialog() { //Manipulate ImageList FolderTreeIcons=new ImageList(); for(int i=0;i<IconFileNames.Length;i++) { FolderTreeIcons.Images.Add(Image.FromFile(@"Images" + IconFileNames[i])); } //Setting Properties for TreeView FolderTree=new TreeView(); FolderTree.AfterSelect+=new TreeViewEventHandler(Node_Select); FolderTree.ImageList=FolderTreeIcons; FolderTree.Anchor=AnchorStyles.Top|AnchorStyles.Bottom|AnchorStyles.Left|AnchorStyles.Right; //Root Node RootNode=new TreeNode(); RootNode.Text="My Computer"; RootNode.Tag="My Computer"; RootNode.ImageIndex=0; FolderTree.Nodes.Add(RootNode); FolderTree.SelectedNode=RootNode; FolderTree.SelectedNode.ImageIndex=0; this.Text="Browse For Folder"; this.Size=new Size(300,300); FolderTree.Size=new Size(290,275); this.Controls.Add(FolderTree); } private void EnumDrives(TreeNode ParentNode) { if(ParentNode.Nodes.Count==0) { foreach(string drive in Directory.GetLogicalDrives()) { FolderTree.SelectedNode=ParentNode; TreeNode TempNode=new TreeNode(); TempNode.Text=drive.Substring(0,drive.Length-1); TempNode.Tag=drive; TempNode.ImageIndex=1; TempNode.SelectedImageIndex=1; FolderTree.SelectedNode.Nodes.Add(TempNode); FolderTree.SelectedNode.Nodes[FolderTree.SelectedNode.Nodes.Count-1].EnsureVisible(); } } } private void EnumDirectories(TreeNode ParentNode) { FolderTree.SelectedNode=ParentNode; string DirectoryPath=ParentNode.Tag.ToString(); if(ParentNode.Nodes.Count==0) { if(DirectoryPath.Substring(DirectoryPath.Length-1)!=@"") DirectoryPath+=@""; try { foreach(string directory in Directory.GetDirectories(DirectoryPath)) { TreeNode TempNode=new TreeNode(); TempNode.Text=directory.Substring(directory.LastIndexOf(@"")+1); TempNode.Tag=directory; TempNode.ImageIndex=3; TempNode.SelectedImageIndex=2; FolderTree.SelectedNode.Nodes.Add(TempNode); FolderTree.SelectedNode.Nodes[FolderTree.SelectedNode.Nodes.Count-1].EnsureVisible(); } } catch(Exception) { } } } private void Node_Select(object sender,TreeViewEventArgs e) { if(e.Node.Tag.ToString()!="My Computer") EnumDirectories(e.Node); else EnumDrives(e.Node); } public static void Main() { Application.Run(new FolderDialog()); } }(转自:http://www.c-sharpcorner.com/winforms/UsingTreeViewPSD 源代码网供稿. |
