Assembly : System.Windows.Forms (dans system.windows.forms.dll)
Syntaxe<SerializableAttribute> _ Public Class TreeNode Inherits MarshalByRefObject Implements ICloneable, ISerializable
Dim instance As TreeNode
[SerializableAttribute] public class TreeNode : MarshalByRefObject, ICloneable, ISerializable
[SerializableAttribute] public ref class TreeNode : public MarshalByRefObject, ICloneable, ISerializable
/** @attribute SerializableAttribute() */ public class TreeNode extends MarshalByRefObject implements ICloneable, ISerializable
SerializableAttribute public class TreeNode extends MarshalByRefObject implements ICloneable, ISerializable
NotesLa collection Nodes contient tous les objets TreeNode enfants assignés au TreeNode en cours. Vous pouvez ajouter, supprimer ou cloner un TreeNode ; tous les n?uds d'arbre enfants sont ajoutés, supprimés ou clonés lors de ces opérations. Chaque TreeNode peut contenir une collection d'autres objets TreeNode. Par conséquent, il peut être difficile de déterminer si vous êtes dans TreeView quand vous parcourez la collection. Pour déterminer votre position dans une arborescence, utilisez la propriété FullPath. La chaîne 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 TreeNode.
Pour définir l'étiquette TreeNode, définissez explicitement l'étiquette Text. Sinon, vous pouvez créer le n?ud d'arbre en utilisant l'un des constructeurs TreeNode qui comportent un paramètre de chaîne qui représente la propriété Text. L'étiquette est affichée à côté de l'image TreeNode affichée, le cas échéant.
Pour afficher des images à côté des n?uds d'arbre, assignez un objet ImageList à la propriété ImageList du contrôle TreeView parent et assignez Image en référençant sa valeur d'index dans la propriété ImageList. Affectez à la propriété ImageIndex la valeur d'index du Image que vous souhaitez afficher quand TreeNode est dans l'état non sélectionné. De façon similaire, affectez à la propriété SelectedImageIndex la valeur d'index du Image que vous souhaitez afficher quand TreeNode est dans l'état sélectionné.
Vous pouvez sélectionner des n?uds d'arbre et parcourir la collection Nodes en utilisant les valeurs des propriétés suivantes : FirstNode, LastNode, NextNode, PrevNode, NextVisibleNode, PrevVisibleNode. Assignez le TreeNode retourné par l'une des propriétés ci-dessus à la propriété TreeView.SelectedNode pour sélectionner le n?ud d'arbre dans le contrôle TreeView.
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 appuyant sur le bouton (+) à côté du TreeNode affiché, le cas échéant, ou bien vous pouvez développer TreeNode en appelant la méthode Expand. Pour développer tous les 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 Collapse, ou bien appuyer sur le bouton (-) à côté du TreeNode affiché, le cas échéant. Vous pouvez également appeler la méthode Toggle pour basculer TreeNode entre les états réduit et développé.
Les n?uds d'arbre peuvent éventuellement comporter une case à 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é.
Remarques à l'attention des héritiers Comme la classe TreeNode implémente l'interface ISerializable, les classes dérivées destinées à être sérialisables doivent également implémenter cette interface et les constructeurs spéciaux comme cela est décrit dans Sérialisation personnalisée.
ExempleL'exemple de code suivant 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 suppose également que vous avez créé une instance d'un contrôle TreeView sur un Form.
' 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
// 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(); }
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(); }
// 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éritageSystem.MarshalByRefObject
System.Windows.Forms.TreeNode
System.ComponentModel.Design.ObjectSelectorEditor.SelectorNode
Sécurité des threads
Plates-formesWindows 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 version
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ