2013-01-17 10 views
0

프로세스 : 노드 경우 노드는 = 노드 텍스트 TreeView 컨트롤에 textbox1.text방지 중복 (VB.NET)

내가 즉 말 노드 중복의 추가를 방지 할

추가됩니다 텍스트 "ABC"가 다음 번에 추가되면 텍스트 "ABC"가있는 노드가 트 리뷰 컨트롤에 추가되어서는 안됩니다.

다음 방법을 시도했지만 원하는 결과를 얻을 수 없습니다. 방법 A)

Dim list As New ArrayList 
list.Add(TextBox1.Text) 
if list.Contains(Textbox1.Text) then 
     MsgBox("Use different name") 
else 
     .....code to add node with text 
end if 

방법 B) 나는 해결책을 이해할 수 없었다

if Treeview1.Nodes.Count > 0 then 
    For i = 0 to Treeview1.Nodes.Count 
     if Treeview1.Nodes(i).Text=Textbox1.Text then 
     MsgBox("Use different name") 
     end if 
    next 
else 
    ........code to add node with text 
end if 

이 포럼에 C#을위한 제안했다.

도움이 될 것입니다.

감사합니다.

답변

0

방법 A는 정상적으로 작동합니다. 코드에 다른 오류가있을 수 있습니다 (else 섹션에 있습니까?). list은 반복적으로 호출되는 함수에 있으면 정적으로 선언해야합니다. 그렇지 않으면 매번 새로운 (재설정 된) 값으로 재설정됩니다. (1) 문에 대한이어야 For i = 0 to Treeview1.Nodes.Count - 1 (아마도 "각"를 사용) 및 msgbox 문 뒤에해야 노드를 추가하는 코드로 else :

방법 B에 오류가 몇 가지 있습니다. 또한 방법 B는 트리 뷰의 루트 노드 만 검색합니다. 모든 노드를 검사하려면 트리를 탐색해야합니다.

+0

방법 B + 제안 된 수정 사항 = 솔루션. 방법 A를 다시 시도했지만 중복 노드를 추가합니다. 거기에 무엇이 잘못되었는지 나는 잘 모릅니다. 시간과 도움을 주셔서 대단히 감사합니다. – mrn

0
If ListView1.Items.Count > 0 Then 
       For I = 0 To ListView1.Items.Count - 1 
        For Each LVL As ListViewItem In ListView1.Items 
         If ListView1.Items.Item(I).Index = LVL.Index Then 
          Continue For 
         Else 
          If ListView1.Items.Item(I).Text = LVL.Text Then 
           LVL.Remove() 
          End If 
         End If 
        Next 
       Next 
      End If