我正在开发一个供个人使用的项目(简单的电话簿)。我在列表视图(listView1)中删除最后剩余的项目时遇到问题。在这里你可以看看它的样子:
所以,让我们说我在列表中有5个联系人,当我尝试删除所有联系人时,这是不可能的。可以只删除其中的4个。当我尝试删除所有这些,然后关闭/运行应用程序时,将不会删除联系人。当我尝试删除其中的4个并关闭/运行程序时,它们将被删除。当我尝试删除最后一个时,也不可能。当我关闭/运行应用程序时,它将始终保持在那里。
由于在此处上传整个代码没有意义,您可以在此link仔细查看。
我该如何解决这个问题?
答案 0 :(得分:1)
这应该可以用于从列表视图中删除项目:
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);
答案 1 :(得分:0)
也许您可以使用clear方法删除最后一项。
ListView1.Clear();
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.clear(v=vs.110).aspx
答案 2 :(得分:0)
您可以向后遍历列表并删除每个项目或按建议使用ListView1.Clear();
答案 3 :(得分:0)
只需替换此行
listView1.SelectedItems[0].Remove();
删除()中的与
foreach ( ListViewItem eachItem in listView1.SelectedItems)
{
listView1.Items.Remove(eachItem);
}
SelectedItems [0]卸下摆臂();不适用于最后一项。
答案 4 :(得分:0)
这是我删除项目的方式:
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 { }
}