从CheckBox列表中删除项目

这是主要forms:

       


代码forms:

 protected void Button1_Click(object sender, EventArgs e) { for (int i = 0; i < chkItems.Items.Count; i++) { if (chkItems.Items[i].Selected == true) { chkItems.Items.RemoveAt(i); } } } 

在我的表单中,我想删除用户已签出的项目。 但是,如果我选择3个项目,则在用户点击删除后,表单上将至少保留一个项目。 我错过了什么?

您需要列出要删除的所有项目,然后逐个删除它们。

例如

 List toBeRemoved = new List(); for(int i=0; i 

在您的示例中,您将删除项目,这将更改您尚未循环的其余项目的索引。 这将导致您在循环时“丢失”项目。 我想这就是问题的原因。

尝试向后循环,例如

 protected void Button1_Click(object sender, EventArgs e) { for (int i = chkItems.Items.Count -1 ; i >= 0; i--) { if (chkItems.Items[i].Selected == true) { chkItems.Items.RemoveAt(i); } } } 

你可以这样做。

 > for (int i = 0; i < chkItems.Items.Count; i++) { if (chkItems.Items[i].Selected == true) { ListItem li =new ListItem(); li.Text = chkItems.Items[i].Text; li.Value = chkItems.Items[i].Value; chkItems.Items.Remove(li); } }