Solved

How to add Images to tree nodes

Posted on 2010-11-30
5
780 Views
Last Modified: 2012-05-10
I have a C# .net windows form application that creates a treeview from from a database.  There are 5 different NODES in the treeview and I want to assign a image to each one.  How can I do this?  

Treeview
  - --->   001   Image 1
  ----->  004   Image 2  
  ----->  005   Image 3
  ----->  001   Image 1  
 
I just want to know how to assign an image to a node.  something like treeGX1.SelectedNode.Image = "C:\dddddd.jpg"
 
0
Comment
Question by:Hojoformo
  • 3
5 Comments
 
LVL 4

Expert Comment

by:ricovox
ID: 34241727
Hi Hojoformo,

You can do this by assigning an imagelist to the treeview and then assigning the desired image Key or index to each Node.

I will provide code in a followup post.
0
 
LVL 4

Accepted Solution

by:
ricovox earned 500 total points
ID: 34241826
Assume you have added an ImageList "imgList" and a Treeview "tvwMain" to your form.

You can assign the ImageList to the Treeview in the VS designer by simply selecting the desired ImageList control from the "ImageList" property's drop-down box.

Or in code:
tvwMain.ImageList = imgList;

Open in new window


Then add all desired images to the ImageList. You can do this in the designer by adding resources, our you can do it in code:

imgList.Images.Add("key", imgImageOrIcon);

Open in new window


where "key" is any string key you want to associate with the image, and imgImageOrIcon is either an Icon object or an Image object that you can load from file using Image.FromFile(string path) etc.

Finally, assign the desired image to the treeview node:
//where key is the key you assigned when you added the image.
tvwMain.SelectedNode.ImageKey = "key"; 

Open in new window


you can also use the image index instead of key:
tvwMain.SelectedNode.ImageIndex = 3;

Open in new window


Hope that helps!
0
 
LVL 4

Expert Comment

by:ricovox
ID: 34241857
Again, just so you know, you can obtain an Image object to add to the ImageList by using the static Image.FromFile(string path) function.

Image image1 = Image.FromFile("C:\dddddd.jpg");
imgList.Images.Add("itemKey1", image1);

Open in new window

0
 
LVL 20

Expert Comment

by:BuggyCoder
ID: 34242533
0
 
LVL 11

Expert Comment

by:SAMIR BHOGAYTA
ID: 34247592
Hello,
Try below code.

public ImageList ImageList { get; set; }


public class Customer
{
   public ArrayList CustomerOrders;
   public string CustomerName;
   public Customer(string myName)
   {
      CustomerName = myName;
      CustomerOrders = new ArrayList();
   }
}
public class Order
{
   public string OrderID;
   public Order(string myOrderID )
   {
      this.OrderID = myOrderID;
   }
}

private void FillTreeView()
{
      // Load the images in an ImageList.
      ImageList myImageList = new ImageList();
      myImageList.Images.Add(Image.FromFile("Default.gif"));
      myImageList.Images.Add(Image.FromFile("SelectedDefault.gif"));
      myImageList.Images.Add(Image.FromFile("Root.gif"));
      myImageList.Images.Add(Image.FromFile("UnselectedCustomer.gif"));
      myImageList.Images.Add(Image.FromFile("SelectedCustomer.gif"));
      myImageList.Images.Add(Image.FromFile("UnselectedOrder.gif"));
      myImageList.Images.Add(Image.FromFile("SelectedOrder.gif"));
      
      // Assign the ImageList to the TreeView.
      myTreeView.ImageList = myImageList;
      
      // Set the TreeView control's default image and selected image indexes.
      myTreeView.ImageIndex = 0;
      myTreeView.SelectedImageIndex = 1;

      /* Set the index of image from the
      ImageList for selected and unselected tree nodes.*/
      this.rootImageIndex = 2;
      this.selectedCustomerImageIndex = 3;
      this.unselectedCustomerImageIndex = 4;
      this.selectedOrderImageIndex = 5;
      this.unselectedOrderImageIndex = 6;
      
      // Create the root tree node.
      TreeNode rootNode = new TreeNode("CustomerList");
      rootNode.ImageIndex = rootImageIndex;
      rootNode.SelectedImageIndex = rootImageIndex;

      // Add a main root tree node.
      myTreeView.Nodes.Add(rootNode);

      // Add a root tree node for each Customer object in the ArrayList.
      foreach(Customer myCustomer in customerArray)
      {
            // Add a child tree node for each Order object.
            int countIndex=0;
            TreeNode[] myTreeNodeArray = new TreeNode[myCustomer.CustomerOrders.Count];
            foreach(Order myOrder in myCustomer.CustomerOrders)
            {
                  // Add the Order tree node to the array.
                  myTreeNodeArray[countIndex] = new TreeNode(myOrder.OrderID,
                    unselectedOrderImageIndex, selectedOrderImageIndex);
                  countIndex++;
            }
            // Add the Customer tree node.
            TreeNode customerNode = new TreeNode(myCustomer.CustomerName,
                  unselectedCustomerImageIndex, selectedCustomerImageIndex, myTreeNodeArray);
            myTreeView.Nodes[0].Nodes.Add(customerNode);
      }
}


0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

Suggested Solutions

Bit flags and bit flag manipulation is perhaps one of the most underrated strategies in programming, likely because most programmers developing in high-level languages rely too much on the high-level features, and forget about the low-level ones. Th…
Introduction                                                 Was the var keyword really only brought out to shorten your syntax? Or have the VB language guys got their way in C#? What type of variable is it? All will be revealed.   Also called…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now