2013-05-04 3 views

답변

2

당신은 선택한 항목의 수를 확인하고 그것을 시도

while (checkedListBox1.CheckedItems.Count > 0) { 
    checkedListBox1.Items.Remove(checkedListBox1.CheckedItems[0]); 
} 

또는

int lastIndex =checkedListBox1.Items.Count-1; 
for(int i=lastIndex ; i>=0 ; i--) 
{ 
    if (checkedListBox1.GetItemCheckState(i) == CheckState.Checked) 
    { 
      checkedListBox1.Items.RemoveAt(i); 
    } 
} 
+1

거의 좋아요. 그러나 때로는 선택한 항목보다 더 많은 항목을 제거합니다 ... – Bryuk

+0

checkedlistbox를 반복하고 선택한 항목이 있는지 확인하여 제거 할 수 있습니까? – Bryuk

+0

당신이 루프하고 제거하려고한다면'foreach'를 사용하지 마십시오. 작동하지 않을 것입니다. 또한 for 루프를 사용할 수 있지만 처음부터 마지막으로 항목을 제거 할 수 있습니다. – Damith

1

아래로 동안 루프에서 제거 할 수 있습니다. 카운트 1에서 0으로이 방법을 사용하면, 나머지의 인덱스를 요소를 제거 할 때 - 그것은 이러한 요소 목록에서 특정 요소를 제거하는 코드를

for (int i = 0; i < CheckBoxList1.Items.Count; i++) 
{ 
    if (CheckBoxList1.Items[i].Selected) 
    { 
     CheckBoxList1.Items.RemoveAt(i); 
     i--; 
    } 
} 
+0

'object'에 'Selected'에 대한 정의가없고 'object'유형의 첫 번째 인수를 허용하는 확장 메서드 'Selected'가 없습니다 (지시문이나 어셈블리 참조가 누락 되었습니까?) – Bryuk

+0

두 개 선택한 항목이 차례 차례로 표시되면 두 번째 항목을 건너 뜁니다. – SimpleVar

0

트릭을 노력하는 것은 역으로 목록을 걸을 것입니다 당신이 아직도 신경을 쓰고있는 것들은 변하지 않았습니다.

관련 문제