TreeView::ImageList Property
Assembly: System.Windows.Forms (in System.Windows.Forms.dll)
If the ImageList property value is anything other than null, 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 that contains a TreeView, and an ArrayList that contains Customer objects that each contain Order objects.
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 ); } }
Available since 1.1
