Partilhar via


Como: Adicionar informações personalizadas a um TreeView ou ListView controle (Windows Forms)

Você pode criar um nó derivado em um Windows Forms TreeView controle ou um item derivado em um ListView controle. Derivação permite que você adicione qualquer campo que você precisa, bem sistema autônomo métodos personalizados e construtores para tratá-los.Um uso desse recurso é anexar um objeto cliente a cada item de nó ou lista de árvore.Os exemplos aqui são para um TreeView controle, mas a mesma abordagem pode ser usado para um ListView 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 derivadas

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

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

    ' 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 passam o nó de árvore e é digitado sistema autônomo um TreeNode classe e, em seguida, você precisará converter sua classe derivada. A conversão é uma conversão explícita de um tipo de objeto para outro.Para obter mais informações sobre a conversão, consulte Conversões explícita e implícita  (Visual Basic), Operador () (Referência C#) (Visual C#), ou Operador 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));
       }
    

Consulte também

Outros recursos

TreeView controle (Windows Forms)

ListView controle (Windows Forms)