Announcement

Collapse
No announcement yet.

Daten an TreeView binden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten an TreeView binden

    Hallo,

    ich habe einen TreeView und möchte gerne an jeden Eintrag Daten "binden".

    Zum Beispiele eine Instanz von einem Typ X gehört zu Item Y.

    In C++ kann man in "Data" den Zeiger auf die Instanz setzten. Gibt es so eine ähnliche Funktion auch in "Visual Basic .NET" ?

    MfG Hans

  • #2
    Hallo,

    >Gibt es so eine ähnliche Funktion auch in "Visual Basic .NET" ?

    Ja - das folgende Beispiel demonstriert dies. Zuerst wird eine Klasse implementiert, in der die zu speichernden Daten eingekapselt werden:
    <pre>
    Public Class OSTreeViewObject
    Public FirstName As String
    Public LastName As String
    <br>
    Public Sub New()
    End Sub
    <br>
    Public Sub New(ByVal firstName As String, ByVal lastName As String)
    Me.FirstName = firstName
    Me.LastName = lastName
    End Sub
    <br>
    Public Overrides Function ToString() As String
    Return FirstName & " " & LastName
    End Function
    End Class
    </pre>
    Danach wird beim Füllen des TreeView-Controls eine Instanz dieser Hilfsklasse über die Eigenschaft <b>Tag</b> mit übergeben:
    <pre>
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim aNode As TreeNode = New TreeNode("Start")
    TreeView1.Nodes.Add(aNode)
    Dim aDetailNode As TreeNode = New TreeNode("Eintrag 1")
    aDetailNode.Tag = New OSTreeViewObject("Kosch", "Andreas")
    aNode.Nodes.Add(aDetailNode)
    aNode.Nodes.Add("Eintrag 2")
    End Sub
    </pre>
    Wenn dann ein TreeView-Eintrag ausgewählt wird, kann man sich die in der Eigenschaft <b>Tag</b> gespeicherte Instanz in den richtigen Typ umtauschen lassen, um dann die dort gespeicherten Informationen auszulesen:
    <pre>
    Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
    Dim aOSTreeViewObject As OSTreeViewObject
    If Not (e.Node.Tag Is Nothing) Then
    aOSTreeViewObject = CType(e.Node.Tag, OSTreeViewObject)
    MessageBox.Show(aOSTreeViewObject.ToString)
    End If
    End Sub
    </pre&gt

    Comment


    • #3
      Hallo Hans

      Mein Vorschlag:

      Public Class TreenodeS
      Inherits TreeNode
      Public Dataobject As Object
      End Class

      Anstelle des TreeNode-Objektes verwendest Du nunmehr das TreeNodeS-Objekt:

      Dim nd as new TreeNodeS

      nd hat nun die zusätzliche Eigenschaft 'Dataobjekt'.

      Gruß Ul

      Comment

      Working...
      X