2015-04-13 3 views
0

У меня есть структура управления Treeview, которую я генерирую во время выполнения, которая добавляет дочерние узлы с текстом, взятым из текстового поля в родительский узел с щелчком выделенных кнопок.Как искать текст дочерних узлов в родительском узле в элементе управления Treeview в vb.net

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

Если это произойдет, пользователь должен получить сообщение о том, что дочерний узел с тем же именем уже добавлен к этому конкретному родительскому узлу. Я написал код, который решает эту проблему для дочерних узлов рядом друг с другом, то есть, если пользователь добавляет дочерний узел под названием «Фрэнк» к родительскому узлу «Семья», а затем пытается добавить «Франк» снова сразу после опекунов, он/она получит сообщение о том, что «Фрэнк» уже добавлен в родительский узел «Семья».

Моя проблема заключается в том, что если пользователь добавляет «Фрэнк», то добавляет «Шелли», затем «Марк», а затем добавляет «Фрэнк», он/она не получит сообщение. Каков наилучший способ решить эту проблему?

+1

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

+0

Привет, Стив, извините, если я не был достаточно ясен в своем оригинальном посте, так как я уверен, что вы смогли бы помочь мне с моей проблемой. Тем временем, ChicagoMike помог мне решить проблему. Спасибо за ваши комментарии. – Iki

+0

@Iki - Пожалуйста, добавьте свой код в следующий раз. – Enigmativity

ответ

0

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

Это может пойти что-то вроде этого:

Dim currentNode As TreeNode = TreeView1.SelectedNode ' The node we just entered 
    Dim targetName As String = TextBox1.Text.trim.toLower ' The string we're searching against - we trim and set to lower for comparison purposes 

    Dim parentNode = currentNode.Parent ' Get the parent 
    Dim childNodes As TreeNodeCollection = parentNode.Nodes ' Get all the children 

    Dim WeHaveDuplicate as Boolean = False ' We use this to flag if a duplicate is found. Initially set to false. 

    For Each tempNode As TreeNode In childNodes 
     If tempNode.Text.trim.toLower = targetName Then WeHaveDuplicate = True ' Test that we have the same name but not referring to the same node 
    Next 

    If WeHaveDuplicate= True Then 
     ' Send message to user 
     ' Do not add new node to treeview 
    Else 
     ' Add new node to treeview 
    End If; 

UPDATE: Я изменил этот код, чтобы использовать текст текстового поля, вместо текущего значения выбранного узла, чтобы определить, существует ли совпадение.

+0

@ ChicagoMike: Благодарим вас за ответ. Ваше предложение очень ценится и очень полезно. Однако, если вам не о чем спросить, пожалуйста, как бы вы предложили мне переработать свою идею, если бы я проверял текст текстового поля (который подается в узел), прежде чем добавлять его в Treeview? Еще раз спасибо. – Iki

+0

Я попробую - знаете ли вы, на каком узле вы собираетесь добавлять этот текст? Другими словами, пользователь, по крайней мере, выбрал узел, к которому они будут добавлять текст? – ChicagoMike

+0

@ ChicgoMike: Спасибо, что ответили мне. Да, предположите, что пользователь выбрал родительский узел, к которому они хотят добавить новый дочерний узел, текст которого находится в текстовом поле. Таким образом, задачей для кода было бы проверить, был ли уже создан или добавлен узел с тем же текстом под выбранным родительским узлом. Если true, тогда код отправляет сообщение пользователю и не добавляет новый дочерний узел. Но если ложь; то новый родительский узел, текст которого находится из текстового поля, добавляется к родительскому узлу. Спасибо, что нашли время, чтобы помочь мне. Я очень ценю вашу помощь. – Iki

Смежные вопросы