Gewusst wie: Hinzufügen von benutzerdefinierten Daten zu einem TreeView- oder ListView-Steuerelement (Windows Forms)

Aktualisiert: November 2007

Sie können einen abgeleiteten Knoten in einem TreeView-Steuerelement von Windows Forms oder ein abgeleitetes Element in einem ListView-Steuerelement erstellen. Bei einer Ableitung können Sie alle erforderlichen Felder sowie benutzerdefinierten Methoden und Konstruktoren für deren Behandlung hinzufügen. Sie könnten z. B. ein Customer-Objekt an alle Strukturknoten oder Listenelemente anhängen. Die genannten Beispiele beziehen sich zwar auf ein TreeView-Steuerelement, derselbe Ansatz kann aber auch für ein ListView-Steuerelement verwendet werden.

So leiten Sie einen Strukturknoten ab

  • Erstellen Sie eine neue Knotenklasse, die von der TreeNode-Klasse abgeleitet ist und über ein benutzerdefiniertes Feld für einen Dateipfad verfügt.

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

So verwenden Sie einen abgeleiteten Strukturknoten

  1. Sie können den neuen abgeleiteten Strukturknoten als Parameter für Funktionsaufrufe verwenden.

    Im unten stehenden Beispiel wurde als Speicherort für die Textdatei der Ordner Eigene Dateien festgelegt. Dieser Speicherort wird verwendet, weil vorausgesetzt werden kann, dass die meisten Computer mit dem Betriebssystem Windows über dieses Verzeichnis verfügen. Auf diese Weise können auch Benutzer mit minimalen Systemzugriffsberechtigungen die Anwendung sicher ausführen.

    ' 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. Wenn der Strukturknoten an Sie übergeben wurde und als TreeNode-Klasse festgelegt ist, müssen Sie eine Umwandlung in Ihre abgeleitete Klasse vornehmen. Die Umwandlung ist eine explizite Konvertierung eines Objekttyps in einen anderen Objekttyp. Weitere Informationen zum Umwandeln finden Sie unter Implizite und explizite Konvertierungen (Visual Basic), Operator () (C#-Referenz) (Visual C#) oder 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));
       }
    

Siehe auch

Weitere Ressourcen

TreeView-Steuerelement (Windows Forms)

ListView-Steuerelement (Windows Forms)