繁体   English   中英

树状视图父子完整层次结构

[英]Tree View Parent-Child Full Hierarchy

我为文件夹导航系统创建了以下树视图:

看起来像:

树视图

我的代码:

string[] RootFolders = Directory.GetDirectories(txtRootDirectory.Text.Trim());

        foreach (string dir0 in RootFolders)
        {
            if (dir0.Contains("_In"))
            {
                TreeViewItem path = new TreeViewItem() { Header = new DirectoryInfo(dir0).Name };

                string[] MainFolder = Directory.GetDirectories(dir0);
                foreach(string dir1 in MainFolder)
                {
                    TreeViewItem path1 = new TreeViewItem() { Header = new DirectoryInfo(dir1).Name };
                    path.Items.Add(path1);

                    string[] SubFolder = Directory.GetDirectories(dir1);
                    foreach (string dir2 in SubFolder)
                    {
                        TreeViewItem path2 = new TreeViewItem() { Header = new DirectoryInfo(dir2).Name };
                        path1.Items.Add(path2);
                    }
                }



                tree.Items.Add(path);
            }
        }

我需要能够获得的是序列中最后一个子节点的所有父文件夹的名称,并将它们串联在一起以创建目录。 例如,如果选择了“ ascx登台应用程序”树项,则需要返回“ ascx登台应用程序”,“ Web应用程序”,“ _ In开发”,以便创建一个字符串来打开该文件。 (即“ c:_In Development \\ Web Applications \\ ascx登台Application.sln”)

到目前为止,我所能想到的就是一切,从这里似乎一切都崩溃了……

private void tree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {
        TreeViewItem trvItem = (TreeViewItem)tree.SelectedItem;

        if (trvItem != null)
        {
            TreeViewItem trvParent = (TreeViewItem)trvItem.Parent;
            MessageBox.Show(trvParent.Header.ToString());
        }
    }

一个非常简单的解决方案是将路径分配给每个TreeViewElement的Tag属性。

读取所选路径的代码如下所示:

private void tree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {
        TreeViewItem trvItem = (TreeViewItem)tree.SelectedItem;

        if (trvItem != null)
        {
            String path = (String)trvItem.Tag;
            MessageBox.Show(path);
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM