2010-03-22 7 views

Odpowiedz

7

Można utworzyć nową klasę, która dziedziczy TreeNode. Dla każdej wartości, którą chcesz przechowywać w treenode, utwórz właściwość dla tej wartości. Podczas pracy z widokiem drzewa po prostu przesuń TreeNode do niestandardowej klasy TreeNode.

Przykład:

public class JobTreeNode : TreeNode { 

    private int intField1; 

    public int Field1 { 
     get { 
      return intField1; 
     } 
     set { 
      intField1 = value; 
     } 
    } 
} 

Wykorzystanie (dodane po komentarzach)

// Add the node 
JobTreeNode CustomNode = new JobTreeNode(); 
CustomNode.Text = "Test"; 
CustomNode.Field1 = 10 
treeView1.Nodes.add(CustomNode); 


// SelectedNode 
((CustomNode)(treeView1.SelectedNode)).Field1; 
+0

Próbowałem, ale nie mogę wyświetlać wartości w polu tekstowym po wybraniu węzła. Przykład: textbox1.Text = treeView1.SelectedNode.Name.ToString(); <- działa textbox2.Text = treeView1.SelectedNode.IntField lub IntField1.ToString(); <- nie działa – Caslav

+2

Musisz rzucić SelectedNode. Coś takiego: ((węzeł niestandardowy) (treeView1.SelectedNode)). Pole 1; – Rhapsody

+0

Należy również upewnić się, że elementy _Add_ JobTreeNode. –

1

Można stworzyć lekką klasę trzymać float1..6 i umieścić instancję w tagu własność.

Alternatywnie możesz użyć Dictionary<TreeNode, FloatsClass> lub użyć 6 oddzielnych Dictionary<TreeNode, float>.

Należy zauważyć, że dotNet 4 ma nowy typ Tuple<A,B,C,...>, aby ułatwić tego typu sytuacje.

3

Właściwość Tag obiektu TreeNode to "obiekt". Nie możesz po prostu przechowywać tam swoich danych przy użyciu jakiejś puszki z danymi?