У меня есть вид дерева WinForm (свойство называется «tvwAcct»), где я хотел бы иметь возможность искать все существующие узлы с заданной строкой (" txtName.Text "), и если он уже существует, чтобы дать пользователю предупреждение о предупреждении для дублирования записей. Он должен иметь возможность искать все родительские узлы, а также дочерние узлы. Моя текущая структура дерева выглядит следующим образом:Как выполнить поиск по всем узлам (включая дочерние узлы)
имя Банковский счет
-> Субсчет имя 1
-> Субсчет имя 2
- имя> Субсчет 3
Я посмотрел на MSDN.Microsoft и можно увидеть, что Nodes.Find мето d существует.
Вот мой код:
Private Sub txtName_Validating(eventSender As Object, eventArgs As CancelEventArgs) Handles txtName.Validating
Dim Cancel As Boolean = eventArgs.Cancel
Dim b As Boolean = True
' [ other 'if' conditions here ]
ElseIf (tvwAcct.Nodes.Find(txtName.Text, b) Then
MyMsgBox("Sorry, this account name already exists. Please try again with a different name.", MsgBoxStyle.Information)
Cancel = True
С помощью этого кода я получаю сообщение об ошибке, в котором говорится:
Значение типа TreeNode() не может быть преобразован в 'Boolean'.
Я был бы открыт для другого способа сделать это, если это не сработает, например, получить текстовые значения узла, а затем помещать их в список массивов и запрашивать список массивов. Но я недостаточно опытен, чтобы знать, как это сделать.
Кто-нибудь знает, где я ошибся, пожалуйста? Или может обеспечить лучшее решение?
Спасибо за это! Мне теперь не дают сообщений об ошибках, которые замечательны. Однако во время тестирования, когда я нажимаю кнопку «Готово», дублирующие узлы все еще добавляются и сохраняются в TreeView, несмотря на это исправление. Правильно ли моя логика? – greenTree
@Pepsi_Max Вы не указали достаточно своего кода. Необходимо запретить добавление узла в TreeView. – LarsTech