C# 使用资源文件本地化treeview中的节点文本

C# 使用资源文件本地化treeview中的节点文本,c#,winforms,visual-studio-2008,.net-3.5,C#,Winforms,Visual Studio 2008,.net 3.5,对于一个项目,我需要一个树状视图,允许用户选择一个模块,然后显示在内容区域中。该项目严重依赖本地化,这是由资源文件提供的 现在我发现,分配给预设树视图节点的文本不包含在资源文件中 所以问题是,除了在代码中映射元素外,是否有一种方法可以做到这一点。即,为节点分配一个名称,在所有节点上运行,并根据节点名称从资源管理器中提取资源 这就是我目前正在做的,但是,它“感觉”不对: 谢谢 您的方法在我看来还可以,但有一个例外,它认为node.Name在整个treeview中是唯一的(这在一般情况下是不正确的)

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

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

所以问题是,除了在代码中映射元素外,是否有一种方法可以做到这一点。即,为节点分配一个名称,在所有节点上运行,并根据节点名称从资源管理器中提取资源

这就是我目前正在做的,但是,它“感觉”不对:


谢谢

您的方法在我看来还可以,但有一个例外,它认为node.Name在整个treeview中是唯一的(这在一般情况下是不正确的)

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


不要忘了调用TreeView的BeginUpdate EndUpdate。

除了op中的一个statete外,找不到合适的解决方案。。。因此,结束这个问题似乎是恰当的。

问题在于是否有其他(更好的)方法。和是的,我知道节点的名称不必是唯一的,但在我的例子中是唯一的。很遗憾,这还不足以让人接受。。。
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);
    }
}