2010-03-22 5 views

risposta

7

È possibile creare una nuova classe che eredita il TreeNode. Per ogni valore che si desidera memorizzare nel treenode, creare una proprietà per quel valore. Quando si lavora con Treeview, basta lanciare il TreeNode sulla classe TreeNode personalizzata.

Esempio:

public class JobTreeNode : TreeNode { 

    private int intField1; 

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

Uso (aggiunto dopo i commenti)

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


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

L'ho provato ma non riesco a visualizzare i valori nella casella di testo quando seleziono il nodo. Esempio: textbox1.Text = treeView1.SelectedNode.Name.ToString(); <- works textbox2.Text = treeView1.SelectedNode.IntField o IntField1.ToString(); <- non funziona – Caslav

+2

Devi lanciare il SelectedNode. Qualcosa di simile: ((CustomNode) (treeView1.SelectedNode)). Field1; – Rhapsody

+0

Devi anche assicurarti di _Aggiungere gli elementi JobTreeNode. –

1

È possibile creare una classe leggera per tenere il vostro float1..6 e mettere un'istanza nel tag proprietà.

In alternativa, è possibile utilizzare uno Dictionary<TreeNode, FloatsClass> o forse utilizzare 6 separati Dictionary<TreeNode, float>.

Si noti che dotNet 4 ha un nuovo tipo Tuple<A,B,C,...> per rendere un po 'più semplice questo tipo di situazioni.

3

La proprietà Tag di TreeNode è "oggetto". Non puoi semplicemente archiviare i tuoi dati usando un dataclass di qualche tipo?