I’m not seeking an answer but rather ideas and suggestions for creating a better solution. I’m even looking for perhaps a reference to some fundamental Object Oriented Design theory as I feel this must be a common scenario, yet I don’t know how to phrase it correctly to find solid search results.
I pose this example (I’ll spare the code since it’s easily explained):
I have one Form containing one Treeview, one Button, and one Textbox. I also have a class, TextClass, which has 2 strings: Text and Name.
When the button is clicked:
- Create a new TreeNode. Assign the TreeNode a unique name (ex: “Instance1”) and add it to the Treeview
- Create an instance of the class, TextClass. Assign the unique name (ex: “Instance1”) to the TextClass.Name
- Add this new instance of TextClass to a list, TextClassList
When a node is clicked in the Treeview:
- Loop through the list, TextClassList, and find the TextClass.Name string which matches the currently selected TreeNode.Name
- Then set: Textbox.Text = TextClass.Text
When the Textbox_TextChanged is triggered:
- Loop through the list and find the TextClass.Name string which matches the currently selected TreeNode, TreeNode.Name
- Then set: TextClass.Text = Textbox.Text
All of this works just fine, however it seems… sloppy. I am asking if there is a better/proper way of going about this method of storing and retrieving values. If this is a OOP fundamental, I would appreciate some keywords that I could do some searching on.
Thank you,
Doug
A TreeNode has a property
Tagwhich can be used to store data which is associated with this node. So you could storeTextClassinstances with each newly created node. This way you don’t have to maintain an extra list and sync it with the TreeNode.I also wouldn’t rely on display names for the association: you run into problems if you want the names to be changable or if two nodes are allowed to have the same name.
Another question is, how you would do this if no
Tagproperty would be there. I would then use a Dictionary to map the TreeNode instanes to TextClass instances.So if I was to make a general rule out of this: