Condividi tramite


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

È possibile creare un nodo derivato in un controllo windows Form TreeView o un elemento derivato in un controllo ListView. La derivazione consente di aggiungere tutti i campi necessari, nonché metodi e costruttori personalizzati per gestirli. Un uso di questa funzionalità consiste nel collegare un oggetto Customer a ogni nodo dell'albero o elemento di elenco. Gli esempi riportati di seguito sono relativi a un controllo TreeView, ma lo stesso approccio può essere usato per un controllo ListView.

Per derivare un nodo dell'albero

  • Creare una nuova classe node, derivata dalla classe TreeNode, che dispone di un campo personalizzato per registrare un percorso di 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 usare un nodo derivato dell'albero

  1. È possibile utilizzare il nuovo nodo albero derivato come parametro per le funzioni.

    Nell'esempio seguente il percorso impostato per il percorso del file di testo è la cartella Documenti personali. Questa operazione viene eseguita perché è possibile presupporre che la maggior parte dei computer che eseguono il sistema operativo Windows includerà questa directory. Ciò consente anche agli utenti con livelli di accesso minimi al sistema di eseguire l'applicazione in modo sicuro.

    ' 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 si passa il nodo della struttura ad albero e viene digitato come classe TreeNode, sarà necessario eseguire il cast alla classe derivata. Il casting è una conversione esplicita da un tipo di oggetto a un altro. Per ulteriori informazioni sul cast, consultare Conversioni implicite ed esplicite (Visual Basic), Cast e conversioni di tipo (Visual C#) o Operatore di cast: () (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