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

private void button2_Click(object sender, EventArgs e)
{
this.listBox1.Items.RemoveAt(this.listBox1.SelectedIndex);
}
现在的情况是,如果我在Listbox选中了两个item,点击一次button只删除一个,需要再点击一次才能删除第二个选中项。
按照这样的话我如果我选中了多项的话,需要点击多次才能删除我的所有选中项了。。。
请高手指教,怎样写才能点击一次button就能删除选中项。多谢啦~
(我是刚学程序的,很多都不会,也许这个问题很弱智,还请多多包涵~~)

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);//根据索引删除第一个项直到最后一个项被删除
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-11-16
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);
}

按我写的这样弄吧本回答被提问者和网友采纳
第2个回答  2012-04-05
方法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);
}
}
第3个回答  2020-07-30
for (int i = listBox1.SelectedItems.Count - 1; i >= 0; i--)
{
listBox1.Items.Remove(listBox1.SelectedItem);
}
第4个回答  2011-04-09
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);
}
效果还是一样,按一下按钮就删除一个,再按一次又删除一个。。。

C# 怎样把 listbox 里的多个选中项 一次性删除
listBox_1.Items.RemoveAt(a);\/\/根据索引删除第一个项直到最后一个项被删除 } }

C#怎样把listbox里的多个选中项一次性删除?
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.Select...

C#中怎样把listbox里的多个选中项一次性删除?
第一步、在开始菜单界面,在“编辑”功能区,点击“选择”,然后点击下拉菜单中的“选择对象”。第二步、拖动鼠标选中,希望删除的所有形状,放开鼠标后,形状会被全部选中。第三步、全部选中后,按Delete键(非Del键)删除即可。

C#里我写了一段清除ListBok里面重复的项的代码,但是不够简洁,数据量大...
第二种方式,是通过建立一个Dictonary对象来缓存以出现过的值,在循环过程中把所有包含在缓存中的项都删除:private void button2_Click(object sender, EventArgs e){ ListBox.ObjectCollection items = this.listBox1.Items; Dictionary exstis = new Dictionary(); for (int i = count -...

c#中如何清除listBox中的选定项?
方法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(...

C#中winform的列表框如何删除多个选中项?
for (int i=listBox1.Items.Count-1; i>-1; i--){ if (listBox1.GetSelected(i)){ listBox1.Items.RemoveAt(i);} } 需要注意两点。1。 GetSelected(i) 获得选中的状态 2。 循环遍历需要用倒序, 不然删除选项后, index会变化, 造成后删除的序号错误。

C# 如何清空listbox里的值
private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear(); }效果如下:MSDN中Clear()函数介绍:Clear()从集合中移除所有项。备注当从列表移除项时,将丢失有关被删除项的所有信息。 若要从 ListBox 中移除单个项,请使用 Remove 或 RemoveAt 方法。

在c#的WinForm中,如何把listBox1中选择的多项传到listBox2中或点击...
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { listBox2.Items.Add(listBox1.SelectedItem); } private void button1_Click(object sender, EventArgs e) { listBox2.Items.Clear(); foreach (object o in listBox1.Items) { listBox2.I...

c#中listbox中选中某一行,如何将它删除
ListBox.Items.RemoveAt(Index)Index是行号(0开始)ListBox.Items.RemoveAt(ListBox.SelectIndex)是删除当前选中的行(注意保证SelectIndex>=0)

checkedListBox中如何删除被选择的项目
test.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="News_System_test" %> <!DOCTYPE html PUBLIC "-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN" "http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd"> Untitled Page <asp:CheckBo...

相似回答