2016-06-27 6 views
0

TreeViewノードにセカンダリ識別子を追加する方法はありますか?現時点では、キー値に「CategoryID =」と「RecipeID =」を使用して、Node.Name.ToString.Split("=")(0) = "RecipeID"または"CategoryID"を使用して、ノードにどのコンテキストメニューと機能があるかを判断します。例えば「RecipeID =」キーは、コンテキストメニューAを取得し、「区分=」キーはコンテキストメニューBを取得VB.Net TreeViewセカンダリ識別子

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

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

pkCategoryIDとpkRecipeIDを確保データベースの両方の秘密鍵であることキーは一意になります。

しかし、機能を判断するために必要なもう1つの修飾子、真と偽の値があります。私はキーの最後にそれを追加してみましたので、私はその値If Node.Name.ToString.Split("=")(2) = "true"をチェックすることができますがtvwMain.Nodes.Find("CategoryID=" + row.Item("CategoryID").ToString, True)を使用したとき、私はあなたがノードに関する追加情報を格納するためにTreeNodeTagプロパティを使用することができますrow.Item("CategoryID").ToString

答えて

1

後にワイルドカードを使用するカント。 Tagは、型またはオブジェクトを格納できます。この例では、単にFormTreeviewがあります:

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

つの割り当てでは、タグといるContextMenuStripを設定する方法はありますか? EDIT *はちょうど私自身の質問に答えました。はい、.Tag = x.ContextMenuStrip = y – Alex

+1

'MouseUp'イベントをキャッチして関連する' ContextMenuStrip'を取得できるアイデアについてはこちらをご覧くださいhttps://support.microsoft.com/en-us/kb/811399 –