2010-03-24 111 views
1

对于一个项目,我需要一个树视图,允许用户选择一个模块,然后显示在内容区域中。该项目严重依赖本地化,这是由资源文件提供的。使用资源文件在treeview中本地化节点文本

现在我今天才发现,分配给预设树视图节点的文本未包含在资源文件中。

所以问题是,是否有这样做的方式,缺少在代码中映射元素。即为节点分配名称,运行所有节点并根据节点名称从资源管理器中提取资源。

这是我目前在做什么,但是,它只是没有“感觉”的权利:

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); 
    } 
} 

谢谢!

回答

0

没有合适的解决方案,除了在操作中的一个statete ...因此关闭这个问题似乎是适当的。

0

您的方法对我来说看起来不错,但有一个例外,它认为node.Name虽然是整个树视图(这在一般情况下不正确)是唯一的。

您可以使用TreeNode.FullPath作为treeview中的唯一标识节点。或者,您的代码可以依赖节点标记值,但这很大程度上取决于使用情况。

不要忘记调用TreeView的BeginUpdate-EndUpdate。

+0

问题是是否有另一种更好的方法。而且...是的,我知道节点的名称不必是唯一的,但在我的情况下是这样。很遗憾,接受... – AxelEckenberger 2010-04-10 10:50:10