前田稔(Maeda Minoru)の超初心者のプログラム入門
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO; |
// サブフォルダーフラグを使った TreeNode public class TreeNodeEx : System.Windows.Forms.TreeNode { private bool isSubFoldersAdded; public TreeNodeEx(string text) : base(text) { InitializeComponent(); } private void InitializeComponent() { isSubFoldersAdded = false; } public bool SubFoldersAdded { get { return isSubFoldersAdded; } set { isSubFoldersAdded = value; } } } |
private void InitializeComponent() { ・・・ this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); } |
private void Form1_Load(object sender, System.EventArgs e) { treeView1.Nodes.Clear(); TreeNodeEx tne; tne = new TreeNodeEx("マイ コンピュータ"); string[] drives = Directory.GetLogicalDrives(); foreach (string drive in drives) { tne.Nodes.Add(new TreeNodeEx(drive)); } tne.SubFoldersAdded = true; treeView1.Nodes.Add(tne); treeView1.TopNode.Expand(); } |
private void treeView1_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e) { TreeNodeEx node = (TreeNodeEx)e.Node; foreach(TreeNodeEx child in node.Nodes) { if (child.SubFoldersAdded == false) { string path = GetPathFromNode(child); try { DirectoryInfo di = new DirectoryInfo(path); if(di.Exists) { DirectoryInfo[] dirs = di.GetDirectories(); foreach (DirectoryInfo dir in dirs) { child.Nodes.Add(new TreeNodeEx(dir.Name)); } child.SubFoldersAdded = true; } } catch(Exception) { } } } } |