2012-06-18 31 views
1

在我的树视图中,我可以将图像加载到xml数据,但是此代码将通用图像应用于所有节点。为TreeView中的不同节点分配不同的图像

我如何应用Parent node, sub_child node ..等的特定图像。例如,我想为关于XML结构的countries, country, name, states, state分配一个不同的图像。

我已经加载了5个不同的图像在图像目录。我需要一些例子来添加不同的图像到我的树形视图。

private void populateTree() 
{ 
    ImageList li = new ImageList(); 
    li.ImageSize = new Size(32, 32); 
    li.ColorDepth = ColorDepth.Depth32Bit; 
    treeView1.ImageList = li; 

    System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(Application.StartupPath + @"\images"); 
    foreach (System.IO.FileInfo file in dir.GetFiles("*.*")) 
    { 
     li.Images.Add(file.Name, Image.FromFile(@"images\" + file.Name)); 
     treeView1.Nodes.Add(null, file.Name, file.Name.ToString(), file.Name.ToString()); 
    } 

    //treeView1.ImageList = li; 

    //treeView1.SelectedNode.ImageIndex = 0; 
    //treeView1.SelectedNode.SelectedImageIndex = 1; 

    var filename = @"C:\Countries.xml"; 
    //First, we'll load the Xml document 
    XmlDocument xDoc = new XmlDocument(); 
    xDoc.Load(filename); 

    //Now, clear out the treeview, and add the first (root) node 
    treeView1.Nodes.Clear(); 
    treeView1.Nodes.Add(new TreeNode(xDoc.DocumentElement.Name)); 
    TreeNode tNode = new TreeNode(); 
    tNode = (TreeNode)treeView1.Nodes[0]; 
    //Here make a call to AddNode, where we'll add all of our nodes 
    addTreeNode(xDoc.DocumentElement, tNode); 

    //Expand the treeview to show all nodes 
    treeView1.ExpandAll(); 



} 


private void addTreeNode(XmlNode xmlNode, TreeNode treeNode) 
{ 
    XmlNode xNode; 
    TreeNode tNode; 
    XmlNodeList xNodeList; 

    if (xmlNode.HasChildNodes) //The current node has children 
    { 
     xNodeList = xmlNode.ChildNodes; 

     for (int x = 0; x <= xNodeList.Count - 1; x++) //Loop through the child nodes 
     { 
      xNode = xmlNode.ChildNodes[x]; 
      treeNode.Nodes.Add(new TreeNode(xNode.Name)); 
      tNode = treeNode.Nodes[x]; 
      addTreeNode(xNode, tNode); 
     } 
    } 
    else //No children, so add the outer xml (trimming off whitespace) 
     treeNode.Text = xmlNode.OuterXml.Trim(); 
} 

XML文件:

<?xml version="1.0" encoding="utf-8" ?> 
<countries> 
    <country> 
     <name>India</name> 
     <states> 
      <state>TamilNadu</state> 
      <state>Andhra</state> 
      <state>Kerala</state> 
      <state>Karnataka</state> 
     </states> 
    </country> 
</countries> 

回答

2

我认为你正在寻找TreeNode.ImageIndex财产的使用。

分配Image本的索引相关ImageListTreeView的。

+0

你能不能给我一些关于添加图像的更多细节。我检查了它是用于特定数组数据的链接。 – linguini

+1

@linguini:checkout [this](http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.imagelist(v = vs.100).aspx)为完整示例。 – Tigran

相关问题