|
■No78074 (魔界の仮面弁士) に追加 > そこで自分の場合は、まずは「畳んだ状態」のフォルダを追加するようにし、 > ユーザーがそのフォルダノードを展開したとき(BeforeExpand イベント)に、 > 改めてその直下の階層のみを追加するという実装にしています。
動的追加のサンプル。
using System; using System.IO; using System.Linq; using System.Windows.Forms;
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); treeView1.PathSeparator = "\\"; var root = treeView1.Nodes.Add(@"C:\Program Files"); SetTree(root, new DirectoryInfo(@"C:\Program Files"));
treeView1.BeforeExpand += delegate(object sender, TreeViewCancelEventArgs e) { if (e.Node.FirstNode.Text == "NUL") { e.Node.FirstNode.Remove(); SetTree(e.Node, new DirectoryInfo(e.Node.FullPath)); } }; }
private void SetTree(TreeNode parent, DirectoryInfo di) { foreach (var dir in di.GetDirectories()) { var subDir = parent.Nodes.Add(dir.Name); if (dir.EnumerateFileSystemInfos().Any()) { subDir.Nodes.Add("NUL").Collapse(); subDir.Collapse(); } } foreach (var file in di.GetFiles()) { parent.Nodes.Add(file.Name); } } } }
|