Solved

How to add Images to tree nodes

Posted on 2010-11-30
5
783 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

ScreenConnect 6.0 Free Trial

Want empowering updates? You're in the right place! Discover new features in ScreenConnect 6.0, based on partner feedback, to keep you business operating smoothly and optimally (the way it should be). Explore all of the extras and enhancements for yourself!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Vb.net dynamic formulas in runtime 11 74
use of unassigned local variable 'id' 6 40
SqlDependency to get update from sql to my c# app 2 40
Cant save 3D 4 21
Extention Methods in C# 3.0 by Ivo Stoykov C# 3.0 offers extension methods. They allow extending existing classes without changing the class's source code or relying on inheritance. These are static methods invoked as instance method. This…
This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…

809 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