C# 从多列listView中删除所选行
我有一个包含两列的listview,我使用上下文菜单允许用户删除选定的行。要删除所选行,我已尝试使用以下代码,但无效:C# 从多列listView中删除所选行,c#,winforms,listview,C#,Winforms,Listview,我有一个包含两列的listview,我使用上下文菜单允许用户删除选定的行。要删除所选行,我已尝试使用以下代码,但无效: private void toolStripMenuItem1_Click(object sender, EventArgs e) { listView1.SelectedItems.Clear(); } 我怀疑这是因为listview有两列,但我无法找到删除选定行的解决方案。删除所有行可以使用:listView1.Items.Clear()这似乎有效: fo
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
listView1.SelectedItems.Clear();
}
我怀疑这是因为listview有两列,但我无法找到删除选定行的解决方案。删除所有行可以使用:listView1.Items.Clear()代码>这似乎有效:
for (int i = 0; i < listView1.Items.Count; i++ )
{
if (listView1.Items[i].Selected)
{
listView1.Items[i].SubItems.Clear();
}
}
for(int i=0;i
有没有办法删除项目并重新排序ListVIEW,以便在其他行中间没有空行?
< P>这似乎是一个更好的解决方案:
for (int i = 0; i < listView1.Items.Count; i++ )
{
if (listView1.Items[i].Selected)
{
listView1.Items[i].Remove();
}
}
for(int i=0;i
您可以做什么:
foreach (ListViewItem Item in LstvClients.Items)
{
if (item.Selected)
{
LstvClients.Items.Remove(Item);
}
}
(你的更好,item.Remove())BeefTurkey的最新示例看起来是正确的,但是他应该在删除所选项目后减少变量i
:
for (int i = 0; i < listView1.Items.Count; i++ )
{
if (listView1.Items[i].Selected)
{
listView1.Items[i].Remove();
i--;
}
}
for(int i=0;i
删除后,大于i
的项目索引将减少1。因此,您应该重新定位i
,以匹配下一个未测试的项。我一直在使用与其他项稍有不同的方法从ListView控件中删除所有选定项:
while (listBox1.SelectedItems.Count > 0)
{
listBox1.Items.Remove(listBox1.SelectedItem);
}
foreach (ListViewItem listViewItem in listView1.SelectedItems)
{
listView1.Items.Remove(listViewItem);
}
我不确定这将如何在性能方面与大列表上发布的其他方法相匹配,但我认为,在没有问题的情况下,它看起来更干净一些。这是删除所有选定项的正确方法。方法是始终访问索引为0的第一个选定项并循环,直到不再剩下任何选定项。不能安全地引用集合中具有绝对索引的其他项,因为一旦删除其中一个项,索引就会更改
while( listView1.SelectedItems.Count > 0)
{
listView1.Items.Remove(lvFiles.SelectedItems[0]);
}
do
{
this.listView1.CheckedItems[0].Remove();
}而(this.listView1.CheckedItems.Count>0)代码>你能编辑第一篇文章而不是回复两次吗。如果有人当选,你就看不到你的帖子了。或者事实上,这不会移动。你不能在对一个集合进行迭代时弄乱它。这个解决方案就像一个符咒一样有效,到目前为止还没有对我产生影响+1.
foreach(ListViewItem lvItem in lvDocument.SelectedItems)
{
lvDocument.Items.Remove(lvItem);
}