【问题标题】:Localize node texts in treeview using resource files使用资源文件本地化树视图中的节点文本
【发布时间】:2011-01-31 05:07:35
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    你的方法对我来说看起来不错,除了一个例外,它认为 node.Name 尽管整个树视图都是唯一的(这在一般情况下是不正确的)。

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

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

    【讨论】:

    • 问题是是否有另一种(更好的)方法。而且......是的,我知道节点的名称不必是唯一的,但在我的情况下它是。所以遗憾的是还不足以接受......
    【解决方案2】:

    除了操作中的一个陈述之外,没有找到合适的解决方案……所以结束这个问题似乎是合适的。

    【讨论】:

      猜你喜欢
      • 2012-09-20
      • 1970-01-01
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多