某ASP.NET書的ListBox範例有些錯誤

摘要:某ASP.NET書的ListBox範例有些錯誤

下面這段程式是將ListBox1被選取的Item移至ListBox2,

for (int i = 0; i < ListBox1.Items.Count; i++)
        {
            if (ListBox1.Items[i].Selected)
            {
                ListBox2.Items.Add(ListBox1.Items[i].Text);
                ListBox1.Items.Remove(ListBox1.Items[i].Text);
            }
        }

如果ListBox1.SelectionMode = ListSelectionMode.Single結果正確,

但若ListBox1.SelectionMode = ListSelectionMode.Multiple且使用者又複選則會因為

ListBox1.Items.Remove(ListBox1.Items[i].Text)這行程式導致Items的索引重新排列 而使結果錯誤,

提議在ListBox1.Items.Remove(ListBox1.Items[i].Text)這行程式下方增加 i=-1; 可解決錯誤。