使用资源文件在树视图中本地化节点文本

时间:2010-03-24 11:04:31

标签: c# winforms visual-studio-2008 .net-3.5

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

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

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

这就是我目前正在做的事情,然而,它只是“感觉”不正确:

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

谢谢!

2 个答案:

答案 0 :(得分:0)

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

您可以将TreeNode.FullPath用于树视图中的唯一标识节点。或者,您的代码可能依赖于节点标记值,但这在很大程度上取决于使用场景。

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

答案 1 :(得分:0)

除了操作中的一个州之外,找不到合适的解决方案......所以关闭问题似乎是合适的。