c#-无法删除listview中剩余的最后一项

c#-无法删除listview中剩余的最后一项,c#,listview,listviewitem,C#,Listview,Listviewitem,我正在做一个项目(简单的电话簿)供个人使用。删除listview(listView1)中最后一个剩余项时遇到问题。在这里,您可以查看它的外观: 所以,假设我在列表中有5个联系人,当我试图删除所有联系人时,这是不可能的。只能移除其中的4个。当我尝试删除所有联系人,然后关闭/运行应用程序时,将不会删除联系人。当我尝试删除其中4个并关闭/运行程序时,它们将被删除。当我试图删除最后一个,这是不可能的。当我关闭/运行应用程序时,它将始终保持在那里 因为在这里上传整个代码是没有意义的,所以您可以在这里仔细

我正在做一个项目(简单的电话簿)供个人使用。删除listview(listView1)中最后一个剩余项时遇到问题。在这里,您可以查看它的外观:

所以,假设我在列表中有5个联系人,当我试图删除所有联系人时,这是不可能的。只能移除其中的4个。当我尝试删除所有联系人,然后关闭/运行应用程序时,将不会删除联系人。当我尝试删除其中4个并关闭/运行程序时,它们将被删除。当我试图删除最后一个,这是不可能的。当我关闭/运行应用程序时,它将始终保持在那里

因为在这里上传整个代码是没有意义的,所以您可以在这里仔细看看


如何解决此问题?

也许您可以使用清除方法删除最后一项

ListView1.Clear();

您可以向后循环列表,删除每个项目或按建议使用ListView1.Clear()

只需更换这一行即可

 listView1.SelectedItems[0].Remove();
在Remove()中 与


选择编辑项[0]。删除();不适用于最后一项。

这是我删除项目的方式:

ListView1.Clear();
void Rmv()
    {
        DialogResult dialogResult = MessageBox.Show("Are you sure you want to delete this contact?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (dialogResult == DialogResult.Yes)
        {
            Remove();
        }
        else if (dialogResult == DialogResult.No)
        {
            return;
        }
    }
    void Remove()
    {
            if (listView1.SelectedItems.Count > 0)
            {
                Person person = new Person();
                person = FindPerson(listView1.SelectedItems[0].Text);
                people.RemoveAt(listView1.SelectedItems[0].Index);
                foreach (ListViewItem eachItem in listView1.SelectedItems)
                {
                    listView1.Items.Remove(eachItem);
                }
                textBox1.Text = "";
                textBox2.Text = "";
                textBox3.Text = "";
                textBox4.Text = "";
                textBox5.Text = "";
                textBox6.Text = "";
                dateTimePicker1.Value = DateTime.Now;
                if (listView1.SelectedItems.Count == 0)
                {
                    textBox1.ReadOnly = false;
                    textBox2.ReadOnly = false;
                    textBox3.ReadOnly = false;
                    textBox4.ReadOnly = false;
                    textBox5.ReadOnly = false;
                    textBox6.ReadOnly = false;
                    dateTimePicker1.Enabled = true;
                    UserCount();
                }
            }

            else
            {
                MessageBox.Show("Nothing is selected! ", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
    }


    void UserCount()
    {
        try
        {
            if ((listView1.Items.Count) == 0)
            {
                toolStripLabel1.Text = Convert.ToString(listView1.Items.Count) + "& contacts";
            }
            else if ((listView1.Items.Count) == 1)
            {
                toolStripLabel1.Text = Convert.ToString(listView1.Items.Count) + "& contact";
            }
            else
            {
                toolStripLabel1.Text = Convert.ToString(listView1.Items.Count) + "& contacts";
            }
        }
        catch { }
    }

这将用于从listview中删除项目:

Person person = new Person();
try { person = FindPerson(listView1.SelectedItems[0].Text); } catch { return; }
if (listView1.SelectedItems.Count > 0)
{
try
{
if (listView1.SelectedItems.Count == 0) return;
foreach (ListViewItem eachItem in listView1.SelectedItems)
{
people.RemoveAll(x => x.Name == eachItem.Text);
listView1.Items[listView1.Items.Count - 1].Selected = true;
listView1.Items.Remove(eachItem);
}
}
catch { }
ClearAll();
ReadOnlyON();
}
else
{
MessageBox.Show("Nothing is selected!", "Notification", MessageBoxButtons.OK, MessageBoxIcon.Information);

我浏览了一下你的代码,看起来你没有所谓的
RemoveAll
方法。只有一种方法叫做
Remove
。该方法似乎一次只删除一个选定项。您能否详细描述一下如何使用该
remove
方法删除所有项目?有效代码:Dim x As New ListView x.items.Clear()您的remove方法中也有一个空捕获,因此,当您尝试最后一次删除时,可能会出现某种类型的异常。您试过调试它吗?这只会删除listview中的临时项!我需要它从xml文件删除以及!当我再次加载程序时,剩余的项仍然存在。啊,当您运行删除功能时,您当前的程序是否删除了xml文件中的项?再次像时钟一样工作,TYVM!