Como: Adicionar informações de personalizado a um TreeView ou ListView Control (Windows Forms)

Você pode criar um nó derivado em um Windows Forms TreeView controle ou um item derivado em um ListView de controle. Derivação permite que você adicione qualquer campo que você precisa, bem como métodos personalizados e construtores para manuseá-los. Um uso desse recurso é anexar um objeto de cliente para cada item de lista ou nó de árvore. Os exemplos aqui são para uma TreeView controle, mas a mesma abordagem pode ser usado para um ListView de controle.

Para derivar um nó de árvore

  • Criar uma nova classe de nó, derivada de TreeNode classe, que tem um campo personalizado para registrar um caminho de arquivo.

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

Para usar um nó de árvore derivada

  1. Você pode usar o novo nó de árvore derivada como um parâmetro para chamadas de função.

    No exemplo abaixo, o caminho definido para o local do arquivo de texto é a pasta Meus documentos. Isso é feito porque você pode assumir que a maioria dos computadores que executam o sistema operacional Windows inclua este diretório. Isso também permite que os usuários com níveis de acesso do sistema mínimo com segurança, execute o aplicativo.

    ' 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 você é passados no nó de árvore e ele é digitado como um TreeNode classe, em seguida, você precisará converter sua turma de derivada. A conversão é uma conversão explícita de um tipo de objeto para outro. For more information on casting, see Conversões explícitas e implícitas (Visual Basic) (Visual Basic), Operador () (TRANSLATION FROM VPE FOR CSHARP Reference) (Visual C#), or 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));
       }
    

Consulte também

Outros recursos

Controle TreeView (Windows Forms)

Controle ListView (Windows Forms)