Procedura: aggiungere informazioni personalizzate a un controllo TreeView o ListView (Windows Form)

È possibile creare un nodo derivato in un controllo TreeView Windows Form o un elemento derivato in un controllo ListView. La derivazione consente di aggiungere eventuali campi necessari, oltre a metodi e costruttori personalizzati per gestirli. Questa funzionalità può essere utilizzata, ad esempio, per associare un oggetto Customer a ciascun nodo della struttura ad albero o voce dell'elenco. Negli esempi seguenti viene utilizzato il controllo TreeView, tuttavia è possibile eseguire la stessa procedura anche con il controllo ListView.

Per derivare un nodo della struttura ad albero

  • Creare una nuova classe del nodo, derivata dalla classe TreeNode, che presenta un campo personalizzato per la registrazione del percorso di un file.

    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 utilizzare un nodo della struttura ad albero derivato

  1. È possibile utilizzare il nuovo nodo della struttura ad albero derivato come parametro per le chiamate di funzione.

    Nell'esempio riportato di seguito, il percorso impostato per la posizione del file di testo coincide con la cartella Documenti. Si consiglia di utilizzare questa posizione perché tale cartella è presente nella maggior parte dei computer che esegue il sistema operativo Windows. La scelta di questa posizione consente inoltre di eseguire l'applicazione senza problemi agli utenti che dispongono di livelli di accesso minimo.

    ' 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 il nodo della struttura ad albero è stato passato e viene indicato come una classe TreeNode, sarà necessario effettuare il cast sulla classe derivata. Il cast è una conversione esplicita da un tipo di oggetto a un altro. Per ulteriori informazioni sul cast, vedere Implicit and Explicit Conversions (Visual Basic), () Operator (C# Reference) (Visual C#) o 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));
       }
    

Vedere anche

Altre risorse

Controllo TreeView (Windows Form)

Controllo ListView (Windows Form)