views:

69

answers:

1

For a project I need a tree view that allows the user to select a module, which then is displayed in a content area. The project relies heavily on localization and this is provided by the resource files.

Now I discovered today, that the text that are assigned to preset tree view nodes are not contained in the resource files.

So the question is whether there is a way of doing this, short of mapping the elemenst in code. I.e. assigning a name to the node, running over all nodes and pulling the resources from the resouce manager based on the node name.

This is what I am currently doing, however, it just doesn't "feel" right:

private void TranslateNodes(TreeNodeCollection treeNodeCollection) {
    var rm = Resources.ResourceManager;
    foreach (TreeNode node in treeNodeCollection) {
        node.Text = rm.GetString(node.Name + "_Text");
        this.TranslateNodes(node.Nodes);
    }
}

Thanks!

A: 

Your approach looks ok for me, with one exception, it believes that node.Name is unique though entire treeview (which is not correct in general case).

You can use TreeNode.FullPath for unique identify node within treeview. Or alternatively your code can depend on node tag value, but this is highly depend on usage scenario.

And do not forget about calling TreeView's BeginUpdate-EndUpdate.

arbiter
The question was whether there is another (better) approach. And ... yes I know that the name of the node does not have to be unique, but in my case it is. So sadly not enough for acceptance ...
Obalix