C# 如何删除与TreeView检查节点相关的文件?

C# 如何删除与TreeView检查节点相关的文件?,c#,visual-studio,treeview,C#,Visual Studio,Treeview,我想从treeview中删除treenodes,但也要从指定的文件夹中删除。 这就是我试图做的,但似乎有什么不对劲。。。 我在网上搜索了很多次,到处都是关于删除指定路径中的所有内容(清除)。 非常感谢 void RemoveCheckedNodes(TreeNodeCollection nodes) { string currentLocation = Directory.GetCurrentDirectory() + "\\Notes"; List<

我想从treeview中删除treenodes,但也要从指定的文件夹中删除。 这就是我试图做的,但似乎有什么不对劲。。。 我在网上搜索了很多次,到处都是关于删除指定路径中的所有内容(清除)。 非常感谢

void RemoveCheckedNodes(TreeNodeCollection nodes)
    {
        string currentLocation = Directory.GetCurrentDirectory() + "\\Notes";
        List<TreeNode> checkedNodes = new List<TreeNode>();

        foreach (TreeNode node in nodes)
        {
            if (node.Checked)
            {
                checkedNodes.Add(node);
            }
            else
            {
                RemoveCheckedNodes(node.Nodes);
            }
        }

        foreach (TreeNode checkedNode in checkedNodes)
        {
            nodes.Remove(checkedNode);
            string[] path = new string[checkedNodes.Count];
            for (int i = 0; i < checkedNodes.Count; i++)
            {
                path[i]=(currentLocation + "\\" + nodes + ".txt");
                File.Delete(path[i]);
            }                    

        } 
    }
void RemoveCheckedNodes(TreeNodeCollection节点)
{
字符串currentLocation=Directory.GetCurrentDirectory()+“\\Notes”;
List checkedNodes=新列表();
foreach(节点中的树节点)
{
如果(节点已选中)
{
checkedNodes.Add(节点);
}
其他的
{
移除checkednodes(node.Nodes);
}
}
foreach(checkedNodes中的TreeNode checkedNode)
{
节点。删除(选中节点);
字符串[]路径=新字符串[checkedNodes.Count];
对于(int i=0;i
很抱歉我耽搁了,但我直到现在才上网。。。 我找到了解决问题的方法:

 private string currentLocation = Directory.GetCurrentDirectory() + "\\notes";//curent location of the files
 public void RemoveSelectedNodes(TreeNodeCollection nodes)// delete selected nodes from memory
    {
        List<TreeNode> checkedNodes = new List<TreeNode>();

        foreach (TreeNode node in nodes)
        {
            if (node.Checked)
            {
                checkedNodes.Add(node);
            }
            else
            {
                RemoveSelectedNodes(node.Nodes);
            }
        }

        foreach (TreeNode checkedNode in checkedNodes)
            {
            nodes.Remove(checkedNode);
            string[] path = new string[checkedNodes.Count];
            for (int i=0; i < checkedNodes.Count;i++)
            {
                try
                {
                    path[i] = (currentLocation+ "\\" + checkedNode.Text);
                    File.Delete(path[i]);
                    i++;

                }
                catch (Exception)
                {
                    MessageBox.Show("You must select minimum 1 element !");
                }

            } 
       }
private string currentLocation=Directory.GetCurrentDirectory()+“\\notes”//文件的当前位置
public void RemoveSelected节点(TreeNodeCollection节点)//从内存中删除选定节点
{
List checkedNodes=新列表();
foreach(节点中的树节点)
{
如果(节点已选中)
{
checkedNodes.Add(节点);
}
其他的
{
移除所选节点(node.Nodes);
}
}
foreach(checkedNodes中的TreeNode checkedNode)
{
节点。删除(选中节点);
字符串[]路径=新字符串[checkedNodes.Count];
对于(int i=0;i

该代码表示一个树视图,其中填充了.rtf文件,可以通过从树视图中选择来删除。

您到底遇到了什么问题?在我从树视图中选择一些节点后,它从树视图中删除,但不会从计算机内存中删除。它是否引发异常?这是一个Windows窗体问题,因为WPF没有ReNodeCollection类?它不会引发任何异常,只是不会从指定路径中删除选定的文件。我删除了WPF标记:D是WinFormApp,对此表示抱歉。为什么要创建
路径[]数组?也像任何<代码> >异常< /代码>捕获不是一个好主意。考虑捕获<代码> IOExux和<代码> UnjaveDeAccess异常>代码>。如果您想检查是否可以删除该文件。尽管根据消息框中的消息判断,我认为您实际上是一个代码> CKECKDNODES.COUNT>0 在循环之前进行检查,而不是尝试捕获块。