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