Como adicionar informações personalizadas a um controle TreeView ou ListView (Windows Forms)
Você pode criar um nó derivado em um controle Windows Forms TreeView ou um item derivado em um ListView controle. A derivação permite adicionar todos os campos necessários, assim como métodos e construtores personalizados para manipulá-los. Um uso desse recurso é anexar um objeto do cliente a cada nó de árvore ou item de lista. Os exemplos aqui são para um controle, mas a mesma abordagem pode ser usada para um TreeViewListView controle.
Para derivar um nó de árvore
Crie uma nova classe de nó, derivada da TreeNode classe, que tenha 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 derivado
É possível usar o novo nó de árvore derivado 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 podemos presumir que a maioria dos computadores rodando o sistema operacional Windows vão incluir este diretório. Isso também permite que usuários com níveis mínimos de acesso ao sistema executem com segurança 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")));
Se você passar o nó da árvore e ele for digitado como uma TreeNode classe, então você precisará converter para sua classe derivada. Se trata de uma conversão explícita de um tipo de objeto para outro. Para obter mais informações sobre transmissão, consulte Conversões implícitas e explícitas (Visual Basic), Conversão e conversões de tipo (Visual C#) ou Operador de transmissão: () (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)); }
Confira também
.NET Desktop feedback