0

プロセス:ノードは、ノードtext=textbox1.textのツリービューコントロールに追加されます

重複ノードの追加を防ぎたい。たとえば、テキスト「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#に提案された解決策を理解できませんでした。

どんな助けでも本当にありがたいです。

ありがとう

4

2 に答える 2

0

方法Aは問題なく機能するはずです。コードに別のエラーがある可能性があります(elseセクションにありますか?)。list繰り返し呼び出される関数内にある場合は静的と宣言する必要があります。そうでない場合は、毎回新しい(クリアされた)状態にリセットされます。

方法Bには、いくつかのエラーがあります。(1)forステートメントはFor i = 0 to Treeview1.Nodes.Count - 1(「foreach」を使用する可能性があります)でありelse、ノードを追加するコードを含むwithはmsgboxステートメントの後にある必要があります。また、メソッドBは、ツリービューのルートノードのみを検索します。すべてのノードをチェックするには、ツリーをトラバースする必要があります。

于 2013-01-17T05:02:45.150 に答える
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
于 2013-02-07T14:12:25.343 に答える