2016-06-27 7 views
0

Gibt es eine Möglichkeit, einem TreeView-Knoten einen sekundären Bezeichner hinzuzufügen? Im Moment benutze ich "CategoryID =" und "RecipeID =" im Schlüsselwert, um zwischen Kategorieknoten und Rezeptknoten zu unterscheiden, unter Verwendung von Node.Name.ToString.Split("=")(0) = "RecipeID" oder "CategoryID" um festzustellen, welche Kontextmenüs und Funktionalität der Knoten hat. Zum Beispiel "RecipeID =" Tasten erhalten Kontextmenü A und "CategoryID =" Tasten erhalten Kontextmenü BVB.Net TreeView-Sekundärkennung

tvwMain.Nodes.Add("CategoryID=" + row.Item("pkCategoryID").ToString, row.Item("CategoryName").ToString) 

und

tvwMain.Nodes.Add("RecipeID=" + row.Item("pkRecipeID").ToString, row.Item("RecipeName").ToString) 

pkCategoryID und pkRecipeID sind beiden privaten Schlüssel in der Datenbank zu gewährleisten, dass die Schlüssel werden einzigartig sein.

Aber es gibt einen anderen Modifizierer, den ich brauche, um die Funktionalität zu bestimmen, einen wahren und einen falschen Wert. Ich versuchte es auf das Ende des Schlüssels hinzugefügt, so konnte ich seinen Wert If Node.Name.ToString.Split("=")(2) = "true" prüfen, aber bei der Verwendung von tvwMain.Nodes.Find("CategoryID=" + row.Item("CategoryID").ToString, True) Ich kann einen Platzhalter nach dem Gebrauch der row.Item("CategoryID").ToString

Antwort

1

Sie die Tag Eigenschaft eines TreeNode können zusätzliche Informationen über den Knoten zu speichern, . Tag kann einen Typ oder ein Objekt speichern. In diesem Beispiel gibt es nur ein Form und ein Treeview:

Public Class Form1 

    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown 

     With Me.TreeView1 
      With .Nodes.Add("1", "Root") 
       .Nodes.Add("2", "Foo").Tag = True 
       .Nodes.Add("3", "Bar").Tag = False 
       .Nodes.Add("4", "Baz").Tag = True 
       .Nodes.Add("5", "Wup").Tag = New List(Of String) From {"x", "y", "z"} 
      End With 
     End With 

    End Sub 

    Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterSelect 
     If TypeName(e.Node.Tag) = "Boolean" Then 
      MessageBox.Show("It is " & Convert.ToString(e.Node.Tag)) 
     End If 
    End Sub 

End Class 
+0

Gibt es eine Möglichkeit, den Tag und Context in einer Zuordnung zu setzen? EDIT * hat gerade meine eigene Frage beantwortet. yes, .Tag = x.ContextMenuStrip = y – Alex

+1

Hier finden Sie Ideen zum Abfangen des 'MouseUp'-Ereignisses, damit Sie den entsprechenden' ContextMenuStrip' https://support.microsoft.com/en-us/kb/811399 abrufen können –