2016-07-13 5 views
-1

私はチェックボックス付きのツリービューコントローラを持っています。私はこのコントローラをループし、以下を実行するのが好きです:チェックされていないすべてのアイテムを削除します。ツリービューでチェックされていないアイテムを削除する

私のコード(魔女が動作していない)私はエラー92を受け取った -

Dim objNode As Node 
Dim i As Integer 

For Each objNode In Me.TreeView1.Nodes 
i = i + 1 
    If Me.TreeView1.Nodes(i).Checked = False Then Me.TreeView1.Nodes.Remove (i) 
Next 
+0

は、前の自分を初期化を使用して、また、ノード配列のベース1または0ですか?私はそれに応じて設定する必要があります。 – SPlatten

+0

あなたはループを使っています。これはコレクションからオブジェクトを返し、インクリメントされた変数を持つコレクションを参照します。 objNodeが冗長であるか、私は適切なメソッドobjNode.Removeまたはcontrols.nodes(I).remove –

+0

を選択します。つまり、1つのアイテムが削除された後にエラーが発生します(ループの長さは変更されません)。 –

答えて

0

を初期化しないループのために私はこのようなパット(そしてそれは私のために良いです):

Dim i As Integer 
For i = Me.TreeView1.Nodes.Count To 1 Step -1 
    If Me.TreeView1.Nodes(i).Checked = False Then Me.TreeView1.Nodes.Remove (i) 
Next i 
関連する問題