How do I use TreeView with my Tree Datastructure? C# .NET - c#

I have a Tree and load it recursively into my TreeView on my form. The problem is, I do not know how to find out which object in my Tree that I am selected on when I select a node in my TreeView. Any ideas?

You can set the TreeNode's Tag property to the corresponding instance from your object model.

The TreeView nodes (TreeNodes) have properties like Level, Tag, Text etc. The Level property lets you identify in which level is your TreeNode in the TreeView and the Tag and Text properties may let you identify your node uniquely. You may also add same kind of properties to your Tree too and thus you may compare them relevantly and do the conversion you require...
Hope this helps...

If you have a unique id for each record you can assign that id as the TreeNode.Name. TreeNode.Tag is another option.

Related

Do I have to put the "Depth_level" property in a List for a Tree-View in a Wndows forms?

My app has an internal resource (*.csv) to databind a List.
List has the properties "ID" (number of the row), "ParentID" and "Name".
It is similar than this.
https://blogs.msmvps.com/deborahk/populating-a-treeview-control-from-a-list/
Now according to the selected Node in the Tree-view I want to find out which is the properly ID in the list, to show its child Nodes in a DataGridView.
My question is, do I have to add a "Depth level" property in the List? because I could have the same name in different depth levels.
Which would be the best way to get the ID of the list according to the selected Node?
In the future, I have to feed this list from another source. What do you recommend? XML file? It is not in the web and I donĀ“t have to synchronize.
Thanks in advance.

How to set threeview node checkbox to mix state i.e. if any of the child node is selected, Parent node should fill in to indicate that

I am working on a windows form application, where I connect to the database and get a list of projects and sub-projects. I am able to show this as a treeview with checkboxes, that later an user can select to do further operations.
My problem is that, I can't set the Parent node state when one of the child nodes is selected. Here, I want some indication, if any of the child nodes is selected the parent node should fill in to show that something has been selected below that parent node.
Okay, meanwhile, I found answer to my problem. Not really wise but thanks to this Simple Tri-State TreeView control. code link here.
I will definitely try to build my own custom version of this. For now, this works fine.

How to get child location in a treeview?

I currently have a simple tree view that contains one parent node with multiple child nodes. I was wondering if there is a way to find the location of the selected node in the parent tree.
I currently have an action event on the treeview and when the user clicks on the child it prints out the string value of the selected child. I have tried using:
int val = TreeView.SelectedItemProperty.GlobalIndex;
but it always returns 0. I have seen some examples in VB but I cant seem to get the same idea to work in C#.
You have to use the ItemContainerGenerator property of the Treeview.
http://msdn.microsoft.com/en-us/library/system.windows.controls.itemcontainergenerator.aspx
See: ContainerFromIndex and IndexFromContainer
Note that each TreeViewItem also has an ItemContainerGenerator (its an ItemsControl), so you'd have to recursively search down the tree if you have multiple levels.
I think the answer to all your treeview problems (and most ui ones) in wpf is to build a ViewModel. Anytime you start crawling the visual tree to look for elements that you are already binding to, you are doing things the hard way. Once you start using ItemsContainerGenerator you have to start worrying about a whole lot of issues you should not have to.
You are binding to a hierarchical structure. If that structure has a selected item property on each item and it is bound to the TreeViewItem selected item then you can just get the selected item in code and do everything else from there. Have a look at a similiar question here.
So i didn't find the answer i was looking for (I may of confused others with what my question was. by saying location). Anyways how I solved it was I got the string value of the child selected and compared it to my list. Thanks to those who answered!

Adding the check boxes in the TREEVIEW in c#

i want to add the check box to the child node of a certain parent node in the tree view in my application...How should i add it?
TreeView has a property with the name CheckBoxes, if set to true, it shows checkboxes for all child nodes.
The TreeView API only allows you to add/remove checkboxes for EVERY node. If that's what you want, then the answer is easy - use the TreeView's CheckBoxes property.
If you want a checkbox for a particular node in the tree only, then it gets tricky. .NET doesn't directly support that. You can get the tree to accept it using Win32 message overrides, see the link below for a solution elsewhere:
http://dotnetfollower.com/wordpress/2011/05/winforms-treeview-hide-checkbox-of-treenode/
You can't show checkboxes only for some TreeNodes - only for all of them or none at all.
To enable the checkboxes for your tree set the CheckBoxes property to true.

How can I rename a node in TreeView?

I used a TreeView in my WinForms application.
In this application, I add a node to the TreeView. Now I want to rename (not to change text) a node. In other words, I want to change the name property of a new node.
Please tell me how I can do this. Thanks.
I suspect that it's simpler than you think. Each TreeNode item exposes a Name property that allows you to get or set the name of that particular node.
So, to change the name of the currently selected node in your TreeView, all you have to do is set its Name property to a new string value. For example:
myTreeView.SelectedNode.Name = "NewNodeName";
As you've asked, this will not affect the text that is displayed for that particular node. If you want to change that, you can set the node's Text property.

Categories

Resources