2013-10-30 5 views
1

asp.net에서 응용 프로그램을 작성 중입니다. TreeView를 사용하여 표시된 노드 값을 데이터베이스에 저장 한 후 모든 treeview 노드의 선택을 취소하고 싶습니다.treeview 노드의 모든 확인란을 선택 취소하는 방법은 무엇입니까?

foreach (TreeNode node in TreeView1.CheckedNodes) 
     { 
      node.Checked=false; 

     } 

하지만 오류를 보여주고있다 :이를 위해 나는 다음과 같은 코드가 컬렉션 수정; 열거 연산이 실행되지 않을 수 있습니다.

도와주세요. 덕분에 !

답변

1

foreach는을 읽어 당신은 foreach 문으로 수집을 변경할 수 없습니다.
당신은 루프에 대한 을 사용해야합니다

for (int i = 0; i < TreeView1.Nodes.Count; i++) 
{ 
    TreeView1.Nodes[i].Checked = false; 
} 
1
//foreach (TreeNode node in TreeView1.CheckedNodes) 
for(int i=0; i<TreeView1.CheckedNodes.Count; i++) 
{ 
    TreeNode node = TreeView1.CheckedNodes[i]; 
    node.Checked = false; 
} 
+1

저에게 맞습니다. –

1

CheckedNodes.Count 변수는 각 패스를 다시 평가됩니다. 0 인덱스에서 확인란을 계속 선택하면됩니다.

int tvCT; 
tvCT = TreeView1.CheckedNodes.Count; 
if (tvCT > 0) 
{ 
    for (int i = 0; i < tvCT; i++) 
    { 
     TreeNode node = TreeView1.CheckedNodes[0]; 
     node.Checked = false; 
    } 
} 
+0

올바르게 작동하고 있습니다. –

0
foreach (TreeNode node in TreeView1.Nodes) 
      { 
       node.Checked = false; 
       foreach (TreeNode item1 in node.ChildNodes) 
       { 
        item1.Checked = false; 

        foreach (TreeNode item2 in item1.ChildNodes) 
        { 
         item2.Checked = false; 
        } 
       } 
      } 

을 확인 .....! 그것은이 나를 위해 작동하는 매우 간단 블록

1
while (TreeView1.CheckedNodes.Count > 0) 
{ 
    TreeView1.CheckedNodes[0].Checked = false; 
} 

일입니다.

관련 문제