我想从列表框中删除所选项目,然后删除引用该项目的对象,我想删除该项目。我尝试了以下
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
}
当我启动应用程序时,它会在单击“删除”按钮后崩溃。
答案 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();
}