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

时间:2013-11-22 02:47:09

标签: c# listview listviewitem

我正在开发一个供个人使用的项目(简单的电话簿)。我在列表视图(listView1)中删除最后剩余的项目时遇到问题。在这里你可以看看它的样子:

enter image description here

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

由于在此处上传整个代码没有意义,您可以在此link仔细查看。

我该如何解决这个问题?

5 个答案:

答案 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 { }
    }