2012-04-10 2 views
0

У меня есть проверочный список, и я пишу код для двух кнопок: 1, который перемещает все выбранные элементы вверх, и один, который перемещает каждый элемент вниз. Один для перемещения вверх работы, но я не могу получить другую работу:Почему мой отсортированный код блока списка не работает?

//Move up 
     private void button2_Click(object sender, EventArgs e) 
     { 
      for (int i = 1; i < checkedListBox1.Items.Count; i++) { 
       if (checkedListBox1.GetItemChecked(i)) { 
        checkedListBox1.Items.Insert(i - 1, checkedListBox1.Items[i]); 
        checkedListBox1.SetItemChecked(i - 1, true); 
        checkedListBox1.Items.RemoveAt(i + 1); 
       } 
      } 
     } 
//Move Down 
     private void button3_Click(object sender, EventArgs e) 
     { 
      for (int i = checkedListBox1.Items.Count - 2; i >= 0; i--) 
      { 
       if (checkedListBox1.GetItemChecked(i)) 
       { 
        checkedListBox1.Items.Insert(i + 1, checkedListBox1.Items[i]); 
        checkedListBox1.SetItemChecked(i + 1, true); 
        checkedListBox1.Items.RemoveAt(i); 
       } 
      } 
     } 

ответ

3

Я думаю, вам это нужно во втором методе:

checkedListBox1.Items.Insert(i + 2, checkedListBox1.Items[i]); 
checkedListBox1.SetItemChecked(i + 2, true); 

Вы в настоящее время метод вставляет копию текущего элемента перед следующим элементом, который в основном просто помещает его в одно и то же место.

+0

haha ​​да это работает! У меня было + 2 раньше, но другие части кода не работали, и я думал, что эта часть не работает, поэтому я никогда не давал ей второй попытки – Oztaco