C# 怎样把 listbox 里的多个选中项 一次性删除

privatevoidbutton2_Click(objectsender,EventArgse){this.listBox1.Items.RemoveAt(this.l... private void button2_Click(object sender, EventArgs e)
{
this.listBox1.Items.RemoveAt(this.listBox1.SelectedIndex);
}
现在的情况是,如果我在Listbox选中了两个item,点击一次button只删除一个,需要再点击一次才能删除第二个选中项。
按照这样的话我如果我选中了多项的话,需要点击多次才能删除我的所有选中项了。。。
请高手指教,怎样写才能点击一次button就能删除选中项。多谢啦~
(我是刚学程序的,很多都不会,也许这个问题很弱智,还请多多包涵~~)
展开
 我来答
找拽啊
2019-10-10 · TA获得超过308个赞
知道答主
回答量:31
采纳率:0%
帮助的人:7.8万
展开全部
private void button2_Click(object sender, EventArgs e)
{
int b = listBox_1.SelectedItems.Count;//获取要删除项的个数
for (int i = b-1; i >= 0; i--)//设立循环一个一个的删除
{
int a = listBox_1.SelectedIndex;//获取要删除项的索引
listBox_1.Items.RemoveAt(a);//根据索引删除第一个项直到最后一个项被删除
}
}
查理·弗朗西斯37265
推荐于2018-11-16 · TA获得超过125个赞
知道小有建树答主
回答量:78
采纳率:100%
帮助的人:94.3万
展开全部
if (listBox1.Items[i].selected)
this.listBox1.Items.RemoveAt(i);
} 这样明显有问题 你item里面有10个元素 你删了3个 还有几个? remove 1之后 原来的2就变成了1 原来的1被移除了 你在移除2 就是移除的是3

ListBox a1 = new ListBox();
object[] selected_objs = new object[a1.SelectedItems.Count];
a1.SelectedItems.CopyTo(selected_objs, 0);
foreach (object oval in selected_objs)
{
a1.Items.Remove(oval);
}

按我写的这样弄吧
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王姑凉why08
2012-04-05 · TA获得超过195个赞
知道小有建树答主
回答量:283
采纳率:100%
帮助的人:139万
展开全部
方法1
void Btn_DeleteClick(object sender, System.EventArgs e)
{
ListBox.SelectedIndexCollection indices =this.listBox1.SelectedIndices;
int selected=indices.Count;
if(indices.Count>0)
{
for(int n=selected -1;n>=0;n--)
{
int index =indices[n];
listBox1.Items.RemoveAt(index);
}
}
}
方法2
void Btn_DeleteClick(object sender, System.EventArgs e)
{
for(int i=this.listBox1.Items.Count-1;i>=0;i--)
{
this.listBox1.Items.Remove(this.listBox1.SelectedItem);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
掌弘大lI
2020-07-30
知道答主
回答量:1
采纳率:0%
帮助的人:592
展开全部
for (int i = listBox1.SelectedItems.Count - 1; i >= 0; i--)
{
listBox1.Items.Remove(listBox1.SelectedItem);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ThinkIBM
2011-04-09 · TA获得超过5289个赞
知道大有可为答主
回答量:3263
采纳率:0%
帮助的人:5478万
展开全部
for(int i=listBox1.Items.Count-1;i>=0;i--){
if(listBox1.Items[i].Selected)
listBox1.Items.RemoveAt(i);
}
追问
按您这样写好像行不通,不过按照你的思路我写了下面的这个
for (int i = this.listBox1.Items.Count - 1; i >= 0; i--)
{
if (this.listBox1.SelectedIndex == i)
listBox1.Items.RemoveAt(i);
}
效果还是一样,按一下按钮就删除一个,再按一次又删除一个。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式