TreeView::SelectedImageIndex Property


Gets or sets the image list index value of the image that is displayed when a tree node is selected.

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

property int SelectedImageIndex {
	int get();
	void set(int value);

Property Value

Type: System::Int32

A zero-based index value that represents the position of an Image in an ImageList.

Exception Condition

The index assigned value is less than zero.

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


When setting the SelectedImageIndex property at run time, the TreeView handle is recreated (see Control::RecreateHandle) to update the control's appearance. This causes all tree nodes to be collapsed, except for the selected TreeNode.

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 that contains a TreeView, and an ArrayList that contains Customer objects that each contain Order objects. It is also assumed that the Customer and Order objects are defined.

ref class Customer
   ArrayList^ CustomerOrders;
   String^ CustomerName;
   Customer( String^ myName )
      CustomerName = myName;
      CustomerOrders = gcnew ArrayList;


ref class Order
   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 );
         TreeNode^ customerNode = gcnew TreeNode( myCustomer->CustomerName,unselectedCustomerImageIndex,selectedCustomerImageIndex,myTreeNodeArray );
         myTreeView->Nodes[ 0 ]->Nodes->Add( customerNode );

.NET Framework
Available since 1.1
Return to top