首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

treeview目录树有关问题

2012-11-17 
treeview目录树问题private void Form1_Load(object sender, EventArgs e){DriveInfo[] drivers DriveIn

treeview目录树问题
private void Form1_Load(object sender, EventArgs e)
  {
  DriveInfo[] drivers = DriveInfo.GetDrives();//获取计算机上的所有逻辑驱动器名称
  foreach (var item in drivers)
  {
  treeView1.Nodes.Add(item.ToString());
  }
这里获得了盘符,也加载了,但是下面的代码怎么修改才能展开对应的子目录,谢谢
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
  {
  e.Node.Nodes.Cast<TreeNode>().ToList().ForEach(x =>
  {
  try
  {
  if (x.Nodes.Count == 0)
  {
  TreeNode[] nodes = new TreeNode[] { };
  if (x.Tag.GetType() == typeof(DriveInfo))
  {
  var item = x.Tag as DriveInfo;
  nodes = Directory.GetDirectories(item.Name)
  .Select(y => new DirectoryInfo(y))
  .Select(y => new TreeNode(y.Name) { Tag = y })
  .ToArray();
  }
  if (x.Tag.GetType() == typeof(DirectoryInfo))
  {
  var item = x.Tag as DirectoryInfo;
  nodes = Directory.GetDirectories(item.FullName)
  .Select(y => new DirectoryInfo(y))
  .Select(y => new TreeNode(y.Name) { Tag = y })
  .ToArray();
  }
  x.Nodes.AddRange(nodes);
  }
  }
  catch { }
  });
  }

[解决办法]
http://www.cnblogs.com/sndnnlfhvk/archive/2011/03/31/2001065.html之前找资料的
[解决办法]
如下修改即可

C# code
 private void Form1_Load(object sender, EventArgs e)            {                DriveInfo[] drivers = DriveInfo.GetDrives();//获取计算机上的所有逻辑驱动器名称                foreach (var item in drivers)                {                    TreeNode tn = new TreeNode();                    tn.Tag = item;                    tn.Text = item.ToString();                    treeView1.Nodes.Add(tn);                }            }private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)            {                TreeNode tn = e.Node;                try                {                    if (tn.Nodes.Count == 0)                    {                        TreeNode[] nodes = new TreeNode[] { };                        if (tn.Tag.GetType() == typeof(DriveInfo))                        {                            var item = tn.Tag as DriveInfo;                            nodes = Directory.GetDirectories(item.Name)                            .Select(y => new DirectoryInfo(y))                            .Select(y => new TreeNode(y.Name) { Tag = y })                            .ToArray();                        }                        if (tn.Tag.GetType() == typeof(DirectoryInfo))                        {                            var item = tn.Tag as DirectoryInfo;                            nodes = Directory.GetDirectories(item.FullName)                            .Select(y => new DirectoryInfo(y))                            .Select(y => new TreeNode(y.Name) { Tag = y })                            .ToArray();                        }                        tn.Nodes.AddRange(nodes);                    }                }                catch (Exception ee)                { }            } 

热点排行