如何从列表框中删除项目和C#中的对象列表

时间:2013-12-27 11:47:08

标签: c# list listbox

我想从列表框中删除所选项目,然后删除引用该项目的对象,我想删除该项目。我尝试了以下

private void Remove_candidate_Click(object sender, EventArgs e)
        {
            int i = candidate_list.SelectedIndex; // candidate_list is the ListBox
            if (candidate_list.SelectedItems.Count > 0) candidate_list.Items.Remove(candidate_list.SelectedItem);
            candidates.RemoveAt(i); //candidates is the object list
        }

当我启动应用程序时,它会在单击“删除”按钮后崩溃。

2 个答案:

答案 0 :(得分:1)

只需使用

if (candidate_list.SelectedItems.Count > 0) candidate_list.Items.RemoveAt(i);

更强大的做法

int i = candidate_list.SelectedIndex; // candidate_list is the ListBox
if (i >= 0) 
{
    candidate_list.Items.RemoveAt(i);
    candidates.RemoveAt(i); //candidates is the object list
}

答案 1 :(得分:1)

一般案例中,当许多项目可以选择时,您可以使用 此代码用于删除所有选定的项目

  // To prevent candidate_list repainting while items updating
  candidate_list.BeginUpdate();

  try {
    // When using RemoveAt() one should use backward loop 
    for (int i = candidate_list.SelectedIndices.Count - 1; i >= 0; --i) {
      int index = candidate_list.SelectedIndices[i];

      candidate_list.Items.RemoveAt(index);
      candidates.RemoveAt(index); 
    }
  }
  finally {
    candidate_list.EndUpdate();
  }