2010-03-24 108 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