Comment : ajouter des informations personnalisées à un contrôle TreeView ou ListView (Windows Forms)

Mise à jour : novembre 2007

Vous pouvez créer un nœud dérivé dans un contrôle TreeView Windows Forms ou un élément dérivé dans un contrôle ListView. La dérivation vous permet d'ajouter tous les champs qui vous sont nécessaires ainsi que des méthodes et des constructeurs personnalisés pour la gestion de ce nœud ou de cet élément dérivé. Cette fonctionnalité permet notamment d'attacher un objet Customer à chaque nœud d'arborescence ou chaque élément de liste. Les exemples qui vous sont donnés portent sur un contrôle TreeView, mais les techniques décrites peuvent également s'appliquer à un contrôle ListView.

Pour dériver un nœud d'arborescence

  • Créez une classe de nœud dérivée de la classe TreeNode, laquelle contient un champ personnalisé pour l'enregistrement d'un chemin de fichier.

    Class myTreeNode
       Inherits TreeNode
    
       Public FilePath As String
    
       Sub New(ByVal fp As String)
          MyBase.New()
          FilePath = fp
          Me.Text = fp.Substring(fp.LastIndexOf("\"))
       End Sub
    End Class
    
    class myTreeNode : TreeNode
    {
       public string FilePath;
    
       public myTreeNode(string fp)
       {
          FilePath = fp;
          this.Text = fp.Substring(fp.LastIndexOf("\\"));
       }
    }
    
    ref class myTreeNode : public TreeNode
    {
    public:
       System::String ^ FilePath;
    
       myTreeNode(System::String ^ fp)
       {
          FilePath = fp;
          this->Text = fp->Substring(fp->LastIndexOf("\\"));
       }
    };
    

Pour utiliser un nœud d'arborescence dérivé

  1. Vous pouvez utiliser le nouveau nœud d'arborescence dérivé en tant que paramètre dans des appels de fonction.

    Dans l'exemple ci-dessous, le chemin défini pour l'emplacement du fichier texte est le dossier Mes documents. La plupart des ordinateurs exécutant le système d'exploitation Windows disposent, en effet, de ce dossier. Ceci permet également aux utilisateurs disposant de niveaux d'accès minimaux au système d'exécuter l'application en toute sécurité.

    ' You should replace the bold text file 
    ' in the sample below with a text file of your own choosing.
    TreeView1.Nodes.Add(New myTreeNode (System.Environment.GetFolderPath _
       (System.Environment.SpecialFolder.Personal) _
       & "\ TextFile.txt ") )
    
    // You should replace the bold text file 
    // in the sample below with a text file of your own choosing.
    // Note the escape character used (@) when specifying the path.
    treeView1.Nodes.Add(new myTreeNode (System.Environment.GetFolderPath _
       (System.Environment.SpecialFolder.Personal) _
       + @"\TextFile.txt") );
    
    // You should replace the bold text file 
    // in the sample below with a text file of your own choosing.
    treeView1->Nodes->Add(new myTreeNode(String::Concat(
       System::Environment::GetFolderPath
       (System::Environment::SpecialFolder::Personal),
       "\\TextFile.txt")));
    
  2. Si le nœud d'arborescence vous est passé et que son type est celui de la classe TreeNode, vous devrez effectuer un cast vers votre classe dérivée. Le « casting » est une conversion explicite d'un type d'objet vers un autre. Pour plus d'informations sur le casting, consultez Conversions implicites et explicites (Visual Basic), (), opérateur (Référence C#) (Visual C#) ou Cast Operator: () (Visual C++).

    Public Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
       Dim mynode As myTreeNode
       mynode = CType(e.node, myTreeNode)
       MessageBox.Show("Node selected is " & mynode.filepath)
    End Sub
    
    protected void treeView1_AfterSelect (object sender,
    System.Windows.Forms.TreeViewEventArgs e)
    {
       myTreeNode myNode = (myTreeNode)e.Node;
       MessageBox.Show("Node selected is " + myNode.FilePath);
    }
    
    private:
       System::Void treeView1_AfterSelect(System::Object ^  sender,
          System::Windows::Forms::TreeViewEventArgs ^  e)
       {
          myTreeNode ^ myNode = safe_cast<myTreeNode^>(e->Node);
          MessageBox::Show(String::Concat("Node selected is ", 
             myNode->FilePath));
       }
    

Voir aussi

Autres ressources

TreeView, contrôle (Windows Forms)

ListView, contrôle (Windows Forms)