为什么我的选中列表框排序代码不起作用?

时间:2012-04-10 05:00:51

标签: c# arrays winforms debugging checkedlistbox

我有一个选中的列表框,我正在编写两个按钮的代码,1表示向上移动所有选定的项目,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);
                }
            }
        }

1 个答案:

答案 0 :(得分:3)

我认为你需要在第二种方法中使用它:

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

您当前的方法是在以下元素之前插入当前元素的副本,这基本上只是将它放在同一位置。