Локализуйте тексты узлов в древовидной структуре, используя файлы ресурсов - PullRequest
1 голос
/ 24 марта 2010

Для проекта мне нужно древовидное представление, которое позволяет пользователю выбрать модуль, который затем отображается в области содержимого. Проект сильно зависит от локализации, и это обеспечивается файлами ресурсов.

Сегодня я обнаружил, что текст, который назначен предварительно заданным узлам представления дерева, не содержится в файлах ресурсов.

Таким образом, вопрос заключается в том, существует ли способ сделать это, кроме отображения элемента в коде. То есть присвоение имени узлу, выполнение всех узлов и извлечение ресурсов из диспетчера ресурсов на основе имени узла.

Это то, что я сейчас делаю, однако, это просто "не чувствуется" правильно:

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 голосов
/ 23 марта 2012

Не подходит, решение найдено, кроме одного состояния в операторе ... поэтому закрытие вопроса кажется подходящим.

0 голосов
/ 09 апреля 2010

Ваш подход выглядит хорошо для меня, за одним исключением, он считает, что node.Name является уникальным, хотя весь вид дерева (что в общем случае неверно).

Вы можете использовать TreeNode.FullPath для уникальной идентификацииузел внутри дерева.Или же ваш код может зависеть от значения тега узла, но это сильно зависит от сценария использования.

И не забывайте о вызове TreeView BeginUpdate-EndUpdate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...