对于项目,我需要一个树形视图,允许用户选择一个模块,然后该模块显示在内容区域中。该项目在很大程度上依赖于本地化,这是由资源文件提供的。
现在我发现,分配给预设树视图节点的文本不包含在资源文件中。
所以问题是,是否存在这样做的方法,而不是映射代码中的元素。即为节点分配名称,在所有节点上运行,并根据节点名称从资源管理器中提取资源。
这就是我目前正在做的事情,然而,它只是“感觉”不正确:
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 :(得分:0)
您的方法对我来说没问题,但有一个例外,它认为node.Name虽然是整个树视图都是唯一的(在一般情况下这是不正确的。)
您可以将TreeNode.FullPath用于树视图中的唯一标识节点。或者,您的代码可能依赖于节点标记值,但这在很大程度上取决于使用场景。
不要忘记调用TreeView的BeginUpdate-EndUpdate。
答案 1 :(得分:0)
除了操作中的一个州之外,找不到合适的解决方案......所以关闭问题似乎是合适的。