前田稔(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)
{ }
}
}
}
|
![]()