TreeView, classe (System.Windows.Forms)

Bibliothèque de classes .NET Framework 
TreeView, classe 

Affiche une collection hiérarchique d'éléments étiquetés, dont chacun est représenté par un objet TreeNode.

Espace de noms : System.Windows.Forms
Assembly : System.Windows.Forms (dans system.windows.forms.dll)

SyntaxeSyntaxe


Visual Basic (Déclaration)
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
Public Class TreeView
    Inherits Control


Visual Basic (Utilisation)
Dim instance As TreeView


C#
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] 
public class TreeView : Control


C++
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)] 
public ref class TreeView : public Control


J#
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */ 
public class TreeView extends Control


JScript
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) 
public class TreeView extends Control
NotesNotes

La collection Nodes contient tous les objets TreeNode assignés à TreeView. Les n?uds d'arbre dans cette collection sont référencés comme n?uds d'arbre racines. Les n?uds d'arbre ajoutés par la suite à un n?ud d'arbre racine sont référencés comme n?uds enfants. Étant donné que chaque TreeNode peut contenir une collection d'autres objets TreeNode, il peut être difficile de déterminer votre position dans l'arborescence quand vous parcourez la collection. La chaîne TreeNode.FullPath peut être analysée en utilisant la valeur de chaîne PathSeparator pour déterminer le début et la fin d'une étiquette de TreeNode.

Pour afficher des images à côté des n?uds d'arbre, assignez un ImageList à la propriété ImageList et faites référence à la valeur d'index d'un Image dans le ImageList pour assigner Image. Utilisez les propriétés suivantes pour assigner des images :

  • Affectez à la propriété ImageIndex la valeur d'index du Image que vous souhaitez afficher lorsqu' un n?ud d'arbre est non sélectionné.

  • Affectez à la propriété SelectedImageIndex la valeur d'index de Image que vous souhaitez afficher lorsqu' un n?ud d'arbre est sélectionné.

Les images référencées par les valeurs des propriétés ImageIndex et SelectedImageIndex sont les images par défaut affichées pour tous les n?uds d'arbre assignés à la collection Nodes. Chaque n?ud d'arbre peut substituer les images par défaut en définissant les propriétés TreeNode.ImageIndex et TreeNode.SelectedImageIndex.

Les n?uds d'arbre peuvent être développés pour afficher le niveau suivant de n?uds d'arbre enfants. L'utilisateur peut développer TreeNode en cliquant sur le bouton (+) qui est affiché à côté de TreeNode, le cas échéant, ou bien vous pouvez développer TreeNode en appelant la méthode TreeNode.Expand. Pour développer tous les niveaux de n?uds d'arbre enfants dans la collection Nodes, appelez la méthode ExpandAll. Vous pouvez réduire le niveau des TreeNode enfants en appelant la méthode TreeNode.Collapse, ou bien cliquez sur le bouton (-) affiché à côté de TreeNode, le cas échéant. Vous pouvez également appeler la méthode TreeNode.Toggle pour basculer entre les états réduit et développé.

Les n?uds d'arbre peuvent éventuellement comporter des cases à cocher. Pour afficher les cases à cocher, affectez la valeur true à la propriété CheckBoxes de TreeView. La propriété Checked a la valeur true pour les n?uds d'arbre qui sont dans l'état activé.

RemarqueRemarque

Le fait de définir la propriété TreeNode.Checked à partir de l'événement BeforeCheck ou AfterCheck entraîne le déclenchement de l'événement à plusieurs reprises et peut entraîner un comportement inattendu. Par exemple, vous pouvez définir la propriété Checked dans le gestionnaire d'événements lorsque vous procédez à une mise à jour récursive des n?uds enfants, de sorte que l'utilisateur n'a pas à développer et à vérifier chaque n?ud individuellement. Pour empêcher le déclenchement de l'événement à plusieurs reprises, ajoutez à votre gestionnaire d'événements une logique qui exécute le code récursif uniquement si la propriété Action de TreeViewEventArgs n'a pas la valeur TreeViewAction.Unknown. Pour obtenir un exemple, consultez la section Exemple des événements AfterCheck ou BeforeCheck.

Vous pouvez modifier l'apparence du contrôle TreeView en définissant certaines de ses propriétés d'affichage et de style. L'affectation de la valeur true à ShowPlusMinus provoque l'affichage d'un bouton (+) ou (-) à côté de chaque TreeNode, qui permettent respectivement de développer ou réduire celui-ci. Si la propriété ShowRootLines prend la valeur true, TreeView affiche des lignes qui relient tous les n?uds d'arbre racines les uns aux autres. Vous pouvez afficher des lignes qui relient des n?uds d'arbre enfants à leur n?ud racine en affectant la valeur true à la propriété ShowLines. L'affectation de la valeur true à la propriété HotTracking modifie l'apparence des étiquettes de n?ud d'arbre lorsque le pointeur de la souris passe dessus. Lorsqu'il est « hot-tracked », les étiquettes de n?ud d'arbre prennent l'apparence d'un lien hypertexte. Vous pouvez également personnaliser l'apparence complète du contrôle TreeView. Pour cela, définissez la propriété DrawMode sur une valeur autre que TreeViewDrawMode.Normal et gérez l'événement DrawNode.

RemarqueRemarque

Quand vous définissez les propriétés CheckBoxes, Scrollable, ImageIndex et SelectedImageIndex au moment de l'exécution, le handle TreeView est recréé (consultez Control.RecreateHandle) pour mettre à jour l'apparence du contrôle. Cela provoque la réduction de tous les n?uds d'arbre, à l'exception du TreeNode sélectionné.

ExempleExemple

L'exemple de code suivant illustre l'utilisation du contrôle TreeView.



Visual Basic
' Populates a TreeView control with example nodes. 
Private Sub InitializeTreeView()
    treeView1.BeginUpdate()
    treeView1.Nodes.Add("Parent")
    treeView1.Nodes(0).Nodes.Add("Child 1")
    treeView1.Nodes(0).Nodes.Add("Child 2")
    treeView1.Nodes(0).Nodes(1).Nodes.Add("Grandchild")
    treeView1.Nodes(0).Nodes(1).Nodes(0).Nodes.Add("Great Grandchild")
    treeView1.EndUpdate()
End Sub


C#
// Populates a TreeView control with example nodes. 
private void InitializeTreeView()
{
    treeView1.BeginUpdate();
    treeView1.Nodes.Add("Parent");
    treeView1.Nodes[0].Nodes.Add("Child 1");
    treeView1.Nodes[0].Nodes.Add("Child 2");
    treeView1.Nodes[0].Nodes[1].Nodes.Add("Grandchild");
    treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("Great Grandchild");
    treeView1.EndUpdate();
}

L'exemple de code suivant, plus complexe, affiche les informations client dans un contrôle TreeView. Les n?uds d'arbre racine affichent les noms des clients, tandis que les n?uds d'arbre enfants affichent les numéros de commande assignés à chaque client. Dans cet exemple, 1000 clients sont affichés avec 15 commandes chacun. Les méthodes BeginUpdate et EndUpdate permettent d'éviter que TreeView ne soit repeint et un Cursor d'attente est affiché pendant que TreeView crée et peint les objets TreeNode. Cet exemple suppose que vous disposez d'un objet Customer qui peut contenir une collection d'objets Order. Il requiert également que vous disposiez d'un fichier de curseur nommé MyWait.cur dans le répertoire de l'application et que vous ayez créé une instance d'un contrôle TreeView sur un Form.



Visual Basic
' Create a new ArrayList to hold the Customer objects.
Private customerArray As New ArrayList()

Private Sub FillMyTreeView()
   ' Add customers to the ArrayList of Customer objects.
   Dim x As Integer
   For x = 0 To 999
      customerArray.Add(New Customer("Customer" + x.ToString()))
   Next x

   ' Add orders to each Customer object in the ArrayList.
   Dim customer1 As Customer
   For Each customer1 In customerArray
      Dim y As Integer
      For y = 0 To 14
         customer1.CustomerOrders.Add(New Order("Order" + y.ToString()))
      Next y
   Next customer1

   ' Display a wait cursor while the TreeNodes are being created.
   Cursor.Current = New Cursor("MyWait.cur")

   ' Suppress repainting the TreeView until all the objects have been created.
   treeView1.BeginUpdate()

   ' Clear the TreeView each time the method is called.
   treeView1.Nodes.Clear()

   ' Add a root TreeNode for each Customer object in the ArrayList.
   Dim customer2 As Customer
   For Each customer2 In customerArray
      treeView1.Nodes.Add(New TreeNode(customer2.CustomerName))

      ' Add a child TreeNode for each Order object in the current Customer object.
      Dim order1 As Order
      For Each order1 In customer2.CustomerOrders
         treeView1.Nodes(customerArray.IndexOf(customer2)).Nodes.Add( _
    New TreeNode(customer2.CustomerName + "." + order1.OrderID))
      Next order1
   Next customer2

   ' Reset the cursor to the default for all controls.
   Cursor.Current = System.Windows.Forms.Cursors.Default

   ' Begin repainting the TreeView.
   treeView1.EndUpdate()
End Sub 'FillMyTreeView


C#
// Create a new ArrayList to hold the Customer objects.
private ArrayList customerArray = new ArrayList(); 

private void FillMyTreeView()
{
   // Add customers to the ArrayList of Customer objects.
   for(int x=0; x<1000; x++)
   {
      customerArray.Add(new Customer("Customer" + x.ToString()));
   }

   // Add orders to each Customer object in the ArrayList.
   foreach(Customer customer1 in customerArray)
   {
      for(int y=0; y<15; y++)
      {
         customer1.CustomerOrders.Add(new Order("Order" + y.ToString()));    
      }
   }

   // Display a wait cursor while the TreeNodes are being created.
   Cursor.Current = new Cursor("MyWait.cur");
        
   // Suppress repainting the TreeView until all the objects have been created.
   treeView1.BeginUpdate();

   // Clear the TreeView each time the method is called.
   treeView1.Nodes.Clear();

   // Add a root TreeNode for each Customer object in the ArrayList.
   foreach(Customer customer2 in customerArray)
   {
      treeView1.Nodes.Add(new TreeNode(customer2.CustomerName));
          
      // Add a child treenode for each Order object in the current Customer object.
      foreach(Order order1 in customer2.CustomerOrders)
      {
         treeView1.Nodes[customerArray.IndexOf(customer2)].Nodes.Add(
           new TreeNode(customer2.CustomerName + "." + order1.OrderID));
      }
   }

   // Reset the cursor to the default for all controls.
   Cursor.Current = Cursors.Default;

   // Begin repainting the TreeView.
   treeView1.EndUpdate();
}


C++
void FillMyTreeView()
{
   // Add customers to the ArrayList of Customer objects.
   for ( int x = 0; x < 1000; x++ )
   {
      customerArray->Add( gcnew Customer( "Customer " + x ) );
   }
   
   // Add orders to each Customer object in the ArrayList.
   IEnumerator^ myEnum = customerArray->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Customer^ customer1 = safe_cast<Customer^>(myEnum->Current);
      for ( int y = 0; y < 15; y++ )
      {
         customer1->CustomerOrders->Add( gcnew Order( "Order " + y ) );
      }
   }

   // Display a wait cursor while the TreeNodes are being created.
   ::Cursor::Current = gcnew System::Windows::Forms::Cursor( "MyWait.cur" );
   
   // Suppress repainting the TreeView until all the objects have been created.
   treeView1->BeginUpdate();
   
   // Clear the TreeView each time the method is called.
   treeView1->Nodes->Clear();
   
   // Add a root TreeNode for each Customer object in the ArrayList.
   while ( myEnum->MoveNext() )
   {
      Customer^ customer2 = safe_cast<Customer^>(myEnum->Current);
      treeView1->Nodes->Add( gcnew TreeNode( customer2->CustomerName ) );
      
      // Add a child treenode for each Order object in the current Customer object.
      IEnumerator^ myEnum = customer2->CustomerOrders->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Order^ order1 = safe_cast<Order^>(myEnum->Current);
         treeView1->Nodes[ customerArray->IndexOf( customer2 ) ]->Nodes->Add( gcnew TreeNode( customer2->CustomerName + "." + order1->OrderID ) );
      }
   }
   
   // Reset the cursor to the default for all controls.
   ::Cursor::Current = Cursors::Default;
   
   // Begin repainting the TreeView.
   treeView1->EndUpdate();
}


J#
// Create a new ArrayList to hold the Customer objects.
private ArrayList customerArray = new ArrayList();

private void FillMyTreeView()
{
    // Add customers to the ArrayList of Customer objects.
    for (int x = 0; x < 1000; x++) {
        customerArray.Add(new Customer("Customer"
            + ((Int32)x).ToString()));
    }
    // Add orders to each Customer object in the ArrayList.
    for (int iCtr = 0; iCtr < customerArray.get_Count(); iCtr++) {
        Customer customer1 = (Customer)customerArray.get_Item(iCtr);
        for (int y = 0; y < 15; y++) {
            customer1.get_CustomerOrders().Add(new Order("Order"
                + ((Int32)y).ToString()));
        }
    }
    // Display a wait cursor while the TreeNodes are being created.
    get_Cursor().set_Current(new Cursor("MyWait.cur"));
    // Suppress repainting the TreeView until all the objects have
    // been created.
    treeView1.BeginUpdate();
    // Clear the TreeView each time the method is called.
    treeView1.get_Nodes().Clear();
    // Add a root TreeNode for each Customer object in the ArrayList.
    for (int iCtr1 = 0; iCtr1 < customerArray.get_Count(); iCtr1++) {
        Customer customer2 = (Customer)customerArray.get_Item(iCtr1);
        treeView1.get_Nodes().Add(new TreeNode(customer2.get_CustomerName()));
        // Add a child treenode for each Order object in the current
        // Customer object.
        for (int iCtr2 = 0; iCtr2 < customer2.get_CustomerOrders().
            get_Count(); iCtr2++) {
            Order order1 = (Order)customer2.get_CustomerOrders().
                get_Item(iCtr2);
            treeView1.get_Nodes().
                get_Item(customerArray.IndexOf(customer2)).get_Nodes().
                Add(new TreeNode(customer2.get_CustomerName() + "."
                + order1.get_OrderID()));
        }
    }
    // Reset the cursor to the default for all controls.
    get_Cursor().set_Current(Cursors.get_Default());
    // Begin repainting the TreeView.
    treeView1.EndUpdate();
} //FillMyTreeView
Hiérarchie d'héritageHiérarchie d'héritage
Sécurité des threadsSécurité des threads
Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Plates-formesPlates-formes

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

Informations de versionInformations de version

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

.NET Compact Framework

Prise en charge dans : 2.0, 1.0
Voir aussiVoir aussi

Ces informations proviennent du site de http://msdn2.microsoft.com
Source de cette page : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.treeview.aspx

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

9 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-4337
Document créé le 14/10/06 23:48, dernière modification le Vendredi 17 Juin 2011, 12:11
Source du document imprimé : http://www.gaudry.be/dotnet-rf-system.windows.forms.treeview.html Document affiché 1 fois ce mois de Juin.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,87 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
L'homme qui n'aime que soi ne hait rien tant que d'être seul.

Blaise Pascal
 
l'infobrol
Nous sommes le Vendredi 01 Juin 2012, 05:45, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)