用各个试试:
private void FillNodes(string path)
{
if(!Directory.Exists(path)){ MessageBox.Show("文件夹不存在。"); return; } string[] dirs = Directory.GetDirectories(path); string[] fs = Directory.GetFiles(path); foreach(string d in dirs)
{
try { this.treeView1.Nodes.Add(d); this.FillNodes(d); }
catch {}
Application.DoEvents();
}
foreach(string s in fs)
{
try{ this.treeView1.Nodes.Add(s); }
catch{}
Application.DoEvents();
}
}

解决方案 »

  1.   

    高错了,上面的可以,但是treeview中有一条好长的路径.而且也没有文件夹节点.
      

  2.   

    我以前做的,用三个控件.comboBox(显示盘符),treeView(显示文件夹),listBox(显示文件),供参考.private void comboBox_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    string dir = this.comboBox.Text;
    string[] dirs=null; this.treeView.Nodes.Clear(); try
    {
    dirs = Directory.GetDirectories(@dir, "*");
    }
    catch(Exception)
    {
    MessageBox.Show("无法打开!!!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
    return;
    } this.treeView.Nodes.Add(this.comboBox.Text);
    EnumDrives(this.treeView.Nodes[0],this.treeView,this.comboBox,this.listBox);
    }private void comboBox_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    string dir = this.comboBox.Text;
    string[] dirs=null; this.treeView.Nodes.Clear(); try
    {
    dirs = Directory.GetDirectories(@dir, "*");
    }
    catch(Exception)
    {
    MessageBox.Show("无法打开!!!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
    return;
    } this.treeView.Nodes.Add(this.comboBox.Text);
    EnumDrives(this.treeView.Nodes[0],this.treeView,this.comboBox,this.listBox);
    }
    private void treeView_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
    {
    if(e.Node.Text.ToString()!=this.comboBox.Text)
    EnumDirectories(e.Node,this.treeView,this.comboBox,this.listBox);//显示子目录的内容
    else
    EnumDrives(e.Node,this.treeView,this.comboBox,this.listBox);//显示根目录的内容
    }public void EnumDrives(TreeNode ParentNode,System.Windows.Forms.TreeView treeView,System.Windows.Forms.ComboBox comboBox,System.Windows.Forms.ListBox listBox)
    {
    string errorStr = null;
    treeView.SelectedNode=ParentNode;
    if(ParentNode.Nodes.Count==0)
    {
    try
    {
    foreach(string directory in Directory.GetDirectories(comboBox.Text))
    {
    treeView.SelectedNode=ParentNode;
    TreeNode TempNode=new TreeNode();
    TempNode.Text=directory.Substring(directory.LastIndexOf(@"\")+1);
    TempNode.Tag=directory;
    TempNode.ImageIndex=0;
    TempNode.SelectedImageIndex=11;
    treeView.SelectedNode.Nodes.Add(TempNode);
    treeView.SelectedNode.Nodes[treeView.SelectedNode.Nodes.Count-1].EnsureVisible();
    }
    }
    catch(Exception ex)
    {
    errorStr = ex.ToString();
    MessageBox.Show(ex.Message,"错误", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
    }
    }
    if(errorStr!=null)
    return; listBox.Items.Clear();
    foreach(string directory in Directory.GetFiles(comboBox.Text,"*"))
    {
    listBox.Items.Add(directory.Substring(directory.LastIndexOf(@"\")+1));
    }
    }
      

  3.   

    http://expert.csdn.net/Expert/topic/1525/1525202.xml?temp=.9796106