TreeNode.ImageIndex Property


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Gets or sets the image list index value of the image displayed when the tree node is in the unselected state.

Namespace:   System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public int ImageIndex { get; set; }

Property Value

Type: System.Int32

A zero-based index value that represents the image position in the assigned ImageList.

The ImageIndex value is the index value of an Image stored in the ImageList assigned to the TreeView.ImageList property.


The default value of the ImageIndex property is the same as the ImageIndex property of the TreeView control that the TreeNode is assigned to.

The ImageKey and ImageIndex properties are mutually exclusive; therefore, if one property is set, the other is ignored. If you set the ImageKey property, the ImageIndex property is automatically set to -1. Alternatively, if you set ImageIndex, ImageKey is automatically set to an empty string ("").

The following code example creates and assigns an ImageList to a TreeView control and fills the TreeView control with TreeNode objects. The tree nodes are assigned images from the ImageList that is displayed when the tree node is in a selected or unselected state. This example requires that you have a Form that contains a TreeView, and an ArrayList that contains Customer objects that each contain Order objects. It also requires that the Customer and Order objects are defined.

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();

	// 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.

	// 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);
		// Add the Customer tree node.
		TreeNode customerNode = new TreeNode(myCustomer.CustomerName,
			unselectedCustomerImageIndex, selectedCustomerImageIndex, myTreeNodeArray);

.NET Framework
Available since 1.1
Return to top