Наиболее эффективный способ обеспечения уникальности свойства treeView при вводе пользователем новых значений - PullRequest
1 голос
/ 02 июня 2009

Я ищу эффективный маленький алгоритм для обхода свойства text списка узлов дерева .NET. Когда пользователь заканчивает добавлять новые узлы и в конечном итоге нажимает кнопку Сохранить, мне нужно проверить, что текстовое свойство (которое содержит введенное пользователем понятное имя) все еще уникально. Жизнь была бы легкой, если бы ключ TreeView оказался этой датумом, но это не так (это GUID, но нужно позволить пользователям ввести понятное имя).

Есть ли лучшие идеи, чем введение нового метода с циклом foreach для проверки наличия дублирующих имен в текстовом свойстве для каждого из узлов? Кстати, у меня уже есть каждый отдельный узел, доступный в текущем кодовом пути ... Я перебираю список один раз, чтобы найти другие (более простые) условия для обратной связи. foreach (узел TreeNode в treeView.Nodes [0] .Nodes) {...}

Спасибо, Боб

Ответы [ 3 ]

2 голосов
/ 02 июня 2009

Если пользователь создает дерево с нуля, то, если вы вставляете каждое имя в Hashtable, вы можете быстро проверить наличие дубликатов, проверив наличие имени в Hashtable. Вам придется обрабатывать обновления, но это достаточно просто.

0 голосов
/ 02 июня 2009

Я не знаю, каково ваше отношение элегантности к ремонтопригодности, но для чего-то такого простого я бы посоветовал хеш-таблицу, подобную упомянутой Arnshea, или даже что-то простое, как SortedList.

0 голосов
/ 02 июня 2009

Я должен был сделать это один раз. Насколько я помню, я создал подкласс TreeView и его узлов, а затем добавил свои собственные методы для отслеживания любых изменений в свойстве text, которые всегда добавляли бы новое значение в List, что, конечно, приводило бы к ошибке, если это текстовое значение уже существует. Alos, все старые / prev значения node.text должны были быть удалены из Списка перед добавлением нового значения.

Это сработало для меня.

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