0

チェックリストボックスがあり、2つのボタンのコードを記述しています。1つは選択したすべてのアイテムを上に移動し、もう1つは各アイテムを下に移動します。上に移動するための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);
                }
            }
        }
4

1 に答える 1

3

私はあなたが2番目の方法でこれを必要とすると思います:

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

現在のメソッドは、現在の要素のコピーを次の要素の前に挿入しています。これにより、基本的に同じ場所に配置されます。

于 2012-04-10T05:04:41.303 に答える