C# 获取树视图中选定节点的正确路径

C# 获取树视图中选定节点的正确路径,c#,winforms,C#,Winforms,我正在创建自己的文件资源管理器,我的大部分功能都可以正常工作,但是我仍然无法向用户显示正确的路径 我有一个TreeView显示当前目录的文件夹,还有一个WebBrowser显示所选节点的内容。我有一个TreeView\u双击事件,在TreeView中选择一个文件夹后,它会在WebBrowser中显示该文件夹的内容 问题- 路径为C的示例场景:/Example- 在C内:/Example中有文件夹A、B和C,在每个文件夹中有A1、B1和C1。。。制作路径C:/Example/A/A1等 我目前拥有

我正在创建自己的文件资源管理器,我的大部分功能都可以正常工作,但是我仍然无法向用户显示正确的路径

我有一个TreeView显示当前目录的文件夹,还有一个WebBrowser显示所选节点的内容。我有一个TreeView\u双击事件,在TreeView中选择一个文件夹后,它会在WebBrowser中显示该文件夹的内容

问题-

路径为C的示例场景:/Example-

在C内:/Example中有文件夹A、B和C,在每个文件夹中有A1、B1和C1。。。制作路径C:/Example/A/A1等

我目前拥有的是一个文本框,当应用程序最初打开时,它有一个硬编码的路径,在我的双击事件中,我创建了一个名为\u NewPath的字符串,该字符串等于-

    pathTxt.Text + "\\" + treeView1.SelectedNode.Text.
我将更新Url设置为这样-

    webBrowser.Url = new Uri(_NewPath);
如果我第一次双击该节点,它工作没有问题-C:/Example/A,再低一点也没问题-C:/Example/A/A1但是如果我试图爬回树,我的路径就会混乱到C:/Example/A/B,依此类推(拥有以前的路径并附加到不存在的新路径的末尾)

在正确的方向上的任何轻推都是高度赞赏的。
谢谢。

我自己也设法找到了更好的解决办法。虽然上面的答案很有效,但它取决于textbox值,并且它只在以textbox值开头的路径内有效

我的解决办法是——

 private void TreeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
    {
        TreeNode newSelected = e.Node;
        DirectoryInfo _NewPath = (DirectoryInfo)newSelected.Tag;
        if(_NewPath != null && !string.IsNullOrWhiteSpace(_NewPath.FullName))
        {
            webBrowser.Url = new Uri(_NewPath.FullName);
        }
    }
在我的节点中单击我创建的newSelected事件,这是一个树节点。 使用此方法,我创建了类型为DirectoryInfo的新对象,称为\u NewPath,它与所选treeNode.Tag相等,并强制转换为DirectoryInfo

这样,DirectoryInfo FullName将提供所选节点的当前完整路径,而TreeNode将只提供应用程序启动的路径


最后,我做了一些空检查,并将我的webBrowser.Url值设置为\u NewPath.FullName

您描述的代码不会执行您声称的操作。这样永远不会得到路径,只会在选定节点的文本前加前缀。所以请分享实际代码。我假设您将选择的每个节点的文本追加到
\u NewPath
中,并且从未删除任何节点,因此如果连续三次选择节点“X”,您将得到“C:\X\X\X\”。但这只是猜测。请不要让我们猜。这不是对任何人时间的有效利用。你要找的是一个递归函数。@EdPlunkett回应你的第一条评论,你是对的,这就是我正在做的,我知道我想要的功能在当前的实现中永远不会起作用,很抱歉没有足够的细节,我很快会更新我的问题。我将仔细阅读递归函数,看看是否能找到解决方案。非常感谢。