【发布时间】:2014-12-18 21:32:27
【问题描述】:
我有一个包含两个控件(TreeView 和 ListView)的 Windows 窗体,我想显示 TreeView 中特定路径的所有目录,并且当用户单击 TreeView 中列出的任何目录时所有文件这个目录在ListView中显示。
这是我的代码:
在 Form_Load 事件处理程序中,我将所有目录从 E Drive 加载到 treeView1
private void Form1_Load(object sender, EventArgs e)
{
DirectoryInfo dInfo = new DirectoryInfo(@"E:\");
foreach (DirectoryInfo d in dInfo.GetDirectories())
{
treeView1.Nodes[0].Nodes.Add(d.Name);
}
}
问题来了:
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
try
{
DirectoryInfo dInfo = new DirectoryInfo(e.Node.Text);
foreach (FileInfo f in dInfo.GetFiles())
{
listView1.Items.Add(f.Name);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.Source);
}
}
当任何主体单击 treeView1 中的任何目录时,代码会跳转到列出 listView1 中所有文件的捕获。
异常消息:找不到路径的一部分。
【问题讨论】:
-
问题是您将
d.Name添加到树视图节点而不是d.FullName。因此,当您创建新的DirectoryInfo时,它没有完整路径。