2014-11-04 80 views
0

我正在使用C#的Winform,我已经从XML填充Treeview并需要删除树视图选定节点(运行时)。删除事件:从Xml中删除选定的TreeNode C#

TreeNode node = treeView1.SelectedNode; 
if (treeView1.SelectedNode != null) 
{ 
    if (treeView1.SelectedNode.Parent == null) 
     treeView1.SelectedNode.Remove(); 
    else if (treeView1.SelectedNode.Parent.Nodes.Count == 1) 
     treeView1.SelectedNode.Parent.Remove(); 
    else 
     treeView1.SelectedNode.Remove(); 
} 

XDocument doc = XDocument.Load("menu.xml"); 

var xElement = (from q in doc.Elements("root") 
       where q.Attribute("quick").Value == node.Tag.ToString() 
       select q); 
foreach (var a in xElement) 
    a.Remove(); 
doc.Save("menu.xml"); 

那里有我的XML文件是:

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <quick title="1st Node" /> 
</root> 
+0

您当前的代码有什么问题? – har07 2014-11-04 10:32:42

回答

1

据我所知,从上面的XML要删除节点:快。试试这个:

doc.Root.Descendants("quick").FirstOrDefault().Remove(); 

如果你只有一个“快速”节点,这是有效的。

但是可以有多个'快速'节点,所以为了让选定节点在xml中匹配,需要将该节点的唯一属性值与选定节点的相同属性值进行匹配。

doc.Root.Descendants("quick") 
          .First(x => x.Attribute("title").Value == node.Tag["title"].Tostring()) 
          .Remove(); 
+0

非常感谢Deepti ... :) – 2014-11-04 11:16:30