Procedura: aggiungere informazioni personalizzate a un controllo TreeView o ListView (Windows Form)How to: Add Custom Information to a TreeView or ListView Control (Windows Forms)

È possibile creare un nodo derivato in un Windows Form TreeView controllo o un elemento derivato in una ListView controllo.You can create a derived node in a Windows Forms TreeView control or a derived item in a ListView control. La derivazione consente di aggiungere eventuali campi necessari, nonché metodi personalizzati e costruttori per gestirli.Derivation allows you to add any fields you require, as well as custom methods and constructors for handling them. Un utilizzo di questa funzionalità consiste nel collegare un oggetto Customer a ogni nodo di una struttura ad albero o voce di elenco.One use of this feature is to attach a Customer object to each tree node or list item. Negli esempi seguenti sono per un TreeView il controllo, ma lo stesso approccio può essere utilizzato per un ListView controllo.The examples here are for a TreeView control, but the same approach can be used for a ListView control.

Per derivare un nodo della struttura ad alberoTo derive a tree node

  • Creare una nuova classe di nodo, derivata dal TreeNode (classe), che presenta un campo personalizzato per registrare un percorso di file.Create a new node class, derived from the TreeNode class, which has a custom field to record a file path.

    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("\\"));  
       }  
    };  
    

Per usare un nodo di struttura ad albero derivatoTo use a derived tree node

  1. È possibile usare il nuovo nodo della struttura ad albero derivato come parametro per le chiamate di funzione.You can use the new derived tree node as a parameter to function calls.

    Nell'esempio seguente il percorso impostato per la posizione del file di testo è la cartella Documenti.In the example below, the path set for the location of the text file is the My Documents folder. Si procede in questo modo perché si presume che la maggior parte dei computer con il sistema operativo Windows avrà questa directory.This is done because you can assume that most computers running the Windows operating system will include this directory. Ciò consente inoltre agli utenti del sistema con livelli di accesso minimo di eseguire l'applicazione senza problemi.This also allows users with minimal system access levels to safely run the application.

    ' 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. Se è stato passato il nodo dell'albero e viene indicato come un TreeNode classe, sarà necessario eseguire il cast di una classe derivata.If you are passed the tree node and it is typed as a TreeNode class, then you will need to cast to your derived class. Il cast è una conversione esplicita da un tipo di oggetto a un altro.Casting is an explicit conversion from one type of object to another. Per ulteriori informazioni sul cast, vedere conversioni implicite ed esplicite (Visual Basic), () Operator (Visual c#) o operatore Cast: () (Visual C++Visual C++).For more information on casting, see Implicit and Explicit Conversions (Visual Basic), () Operator (Visual C#), or Cast Operator: () (Visual C++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));  
       }  
    

Vedere ancheSee Also

Controllo TreeViewTreeView Control
Controllo ListViewListView Control