Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5
TreeView Class
 ImageList Property
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
TreeView..::.ImageList Property

Updated: August 2008

Gets or sets the ImageList that contains the Image objects used by the tree nodes.

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

Visual Basic (Declaration)
Public Property ImageList As ImageList
Visual Basic (Usage)
Dim instance As TreeView
Dim value As ImageList

value = instance.ImageList

instance.ImageList = value
C#
public ImageList ImageList { get; set; }
Visual C++
public:
property ImageList^ ImageList {
    ImageList^ get ();
    void set (ImageList^ value);
}
J#
/** @property */
public ImageList get_ImageList()
/** @property */
public  void set_ImageList(ImageList value)
JScript
public function get ImageList () : ImageList
public function set ImageList (value : ImageList)

Property Value

Type: System.Windows.Forms..::.ImageList

The ImageList that contains the Image objects used by the tree nodes. The default value is nullNothingnullptra null reference (Nothing in Visual Basic).

If the ImageList property value is anything other than nullNothingnullptra null reference (Nothing in Visual Basic), all the tree nodes display the first Image stored in the ImageList. You can specify which images from the list are displayed for selected and unselected nodes by setting the ImageIndex and SelectedImageIndex properties. Individual TreeNode objects can specify which image is displayed by setting their ImageIndex and SelectedImageIndex properties. These individual settings will override the settings in the corresponding TreeView properties.

Note:

In the .NET Framework version 1.1, there is an issue that prevents images from appearing on TreeView nodes when your application calls Application..::.EnableVisualStyles. To work around this issue, call Application..::.DoEvents in your Main method immediately after you call EnableVisualStyles. This issue is fixed in the .NET Framework 2.0.

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 are displayed when in a selected or unselected state. This example requires that you have a Form containing a TreeView, and an ArrayList containing Customer objects that each contain Order objects.

Visual Basic
Public Class Customer
   Public CustomerOrders As ArrayList
   Public CustomerName As String

   Public Sub New(myName As String)
      CustomerName = myName
      CustomerOrders = New ArrayList()
   End Sub 'New
End Class 'Customer


Public Class Order
   Public OrderID As String

   Public Sub New(myOrderID As String)
      Me.OrderID = myOrderID
   End Sub 'New
End Class 'Order

Private Sub FillTreeView()
   ' Load the images in an ImageList.
   Dim myImageList As 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.
   Me.rootImageIndex = 2
   Me.selectedCustomerImageIndex = 3
   Me.unselectedCustomerImageIndex = 4
   Me.selectedOrderImageIndex = 5
   Me.unselectedOrderImageIndex = 6

   ' Create the root tree node.
   Dim rootNode As 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.
   Dim myCustomer As Customer
   For Each myCustomer In  customerArray
      ' Add a child tree node for each Order object.
      Dim countIndex As Integer = 0
      Dim myTreeNodeArray(myCustomer.CustomerOrders.Count) As TreeNode
      Dim myOrder As Order
      For Each myOrder In  myCustomer.CustomerOrders
         ' Add the Order tree node to the array.
         myTreeNodeArray(countIndex) = New TreeNode(myOrder.OrderID, _
            unselectedOrderImageIndex, selectedOrderImageIndex)
         countIndex += 1
      Next myOrder
      ' Add the Customer tree node.
      Dim customerNode As New TreeNode(myCustomer.CustomerName, _
         unselectedCustomerImageIndex, selectedCustomerImageIndex, myTreeNodeArray)
      myTreeView.Nodes(0).Nodes.Add(customerNode)
   Next myCustomer
End Sub

C#
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);
    }
}

Visual C++
ref class Customer
{
public:
   ArrayList^ CustomerOrders;
   String^ CustomerName;
   Customer( String^ myName )
   {
      CustomerName = myName;
      CustomerOrders = gcnew ArrayList;
   }

};

ref class Order
{
public:
   String^ OrderID;
   Order( String^ myOrderID )
   {
      this->OrderID = myOrderID;
   }

};

   void FillTreeView()
   {

      // Load the images in an ImageList.
      ImageList^ myImageList = gcnew 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 = gcnew 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.
      IEnumerator^ myEnum = customerArray->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Customer^ myCustomer = safe_cast<Customer^>(myEnum->Current);

         // Add a child tree node for each Order object.
         int countIndex = 0;
         array<TreeNode^>^myTreeNodeArray = gcnew array<TreeNode^>(myCustomer->CustomerOrders->Count);
         IEnumerator^ myEnum = myCustomer->CustomerOrders->GetEnumerator();
         while ( myEnum->MoveNext() )
         {
            Order^ myOrder = safe_cast<Order^>(myEnum->Current);

            // Add the Order tree node to the array.
            myTreeNodeArray[ countIndex ] = gcnew TreeNode( myOrder->OrderID,unselectedOrderImageIndex,selectedOrderImageIndex );
            countIndex++;
         }
         TreeNode^ customerNode = gcnew TreeNode( myCustomer->CustomerName,unselectedCustomerImageIndex,selectedCustomerImageIndex,myTreeNodeArray );
         myTreeView->Nodes[ 0 ]->Nodes->Add( customerNode );
      }
   }

J#
public class Customer
{
    public ArrayList customerOrders;
    public String customerName;

    public Customer(String myName)
    {
        customerName = myName;
        customerOrders = new ArrayList();
    } //Customer
} //Customer

public class Order
{
    public String orderID;

    public Order(String myOrderID)
    {
        this.orderID = myOrderID;
    } //Order
} //Order

    private void FillTreeView()
    {
        // Load the images in an ImageList.
        ImageList myImageList = new ImageList();
        myImageList.get_Images().Add(Image.FromFile("Default.gif"));
        myImageList.get_Images().Add(Image.FromFile("SelectedDefault.gif"));
        myImageList.get_Images().Add(Image.FromFile("Root.gif"));
        myImageList.get_Images().Add(Image.FromFile("UnselectedCustomer.gif"));
        myImageList.get_Images().Add(Image.FromFile("SelectedCustomer.gif"));
        myImageList.get_Images().Add(Image.FromFile("UnselectedOrder.gif"));
        myImageList.get_Images().Add(Image.FromFile("SelectedOrder.gif"));
        // Assign the ImageList to the TreeView.
        myTreeView.set_ImageList(myImageList);
        // Set the TreeView control's default image and selected image indexes.
        myTreeView.set_ImageIndex(0);
        myTreeView.set_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.set_ImageIndex(rootImageIndex);
        rootNode.set_SelectedImageIndex(rootImageIndex);
        // Add a main root tree node.
        myTreeView.get_Nodes().Add(rootNode);
        // Add a root tree node for each Customer object in the ArrayList.
        for (int iCtr1 = 0; iCtr1 < customerArray.get_Count(); iCtr1++) {
            Customer myCustomer = (Customer)customerArray.get_Item(iCtr1);
            // Add a child tree node for each Order object.
            int countIndex = 0;
            TreeNode myTreeNodeArray[] =
                new TreeNode[myCustomer.customerOrders.get_Count()];
            for (int iCtr2 = 0; iCtr2 < myCustomer.customerOrders.get_Count();
                iCtr2++) {
                Order myOrder = (Order)myCustomer.customerOrders.get_Item(iCtr2);
                // Add the Order tree node to the array.
                myTreeNodeArray.set_Item(countIndex,
                    new TreeNode(myOrder.orderID, unselectedOrderImageIndex,
                    selectedOrderImageIndex));
                countIndex++;
            }
            // Add the Customer tree node.
            TreeNode customerNode = new TreeNode(myCustomer.customerName,
                unselectedCustomerImageIndex, selectedCustomerImageIndex,
                myTreeNodeArray);
            myTreeView.get_Nodes().get_Item(0).get_Nodes().Add(customerNode);
        }
    } //FillTreeView

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

Date

History

Reason

August 2008

Added text to Remarks section about how to specify images for tree nodes.

Information enhancement.

Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker