我的源代码是这样,不知道为什么当i等于1时循环就终止了,说是超出范围。请大侠指点一下!                private void ImageFileClearButton_Click(object sender, System.EventArgs e)
{
                        int SelectedCount = this.SelectFileTextBox.SelectedIndices.Count;
for(int i = 0; i<SelectedCount; i++){
int index = this.SelectFileTextBox.SelectedIndices[i];
if (index >= 0)
{
this.SelectFileTextBox.Items.RemoveAt(index);
this.files.RemoveAt(index);
}
} if(this.SelectFileTextBox.Items.Count ==0) 
{
this.ImageFileClearButton.Enabled = false;
this.ImageOpenFileButton.Enabled = false;
}
}

解决方案 »

  1.   

    我明白了,只要倒着删除就可以了。因为每次删除Item之后,ListViewItems和SelectedItems都会发生变化。 
             int SelectedCount = this.SelectFileTextBox.SelectedIndices.Count;
    for(int i = 0; i<SelectedCount; i++){
    int j = SelectedCount - i - 1;
    int index = this.SelectFileTextBox.SelectedIndices[j];
    if (index >= 0)
    {
    this.SelectFileTextBox.Items.RemoveAt(index);
    this.files.RemoveAt(index);
    }
    }
      

  2.   

    for循环的时候总元素是不能减少的。否则会出错。这是很基本的逻辑问题。仔细检查就能看出来了。