在winforms listview中删除具有特定值的项目

时间:2017-07-21 18:12:03

标签: c# winforms listview

我想删除listview中的值,其值为(例如下图)等于100109。

enter image description here

我的代码是:

     private void listy()
    {
        ListViewItem lvi = new ListViewItem(dgvPOSproduct.CurrentRow.Cells[0].Value.ToString());

        lvi.SubItems.Add(dgvPOSproduct.CurrentRow.Cells[1].Value.ToString());
        lvi.SubItems.Add(lblD.Text);
        lvi.SubItems.Add(lblV.Text);
        lvi.SubItems.Add("" + dgvPOSproduct.CurrentRow.Cells[6].Value.ToString() + " x " + quantity.Text + " ");
        lvi.SubItems.Add(unittotal.Text);
        listView1.Items.Add(lvi);
    }

要删除的代码(这是错误的)是:

     foreach (DataGridViewRow item in this.dgvPOScart.SelectedRows)
        {
            string id = "";
            if (dgvPOScart.SelectedCells.Count > 0)
            {
                int selectedrowindex = dgvPOScart.SelectedCells[0].RowIndex;

                DataGridViewRow selectedRow = dgvPOScart.Rows[selectedrowindex];

                id = Convert.ToString(selectedRow.Cells[0].Value);

                listView1.Items[id].Remove();

            }
    }

其中id值为100109。

3 个答案:

答案 0 :(得分:1)

一个选项是构建一个辅助函数来查找所需的项目索引。

private int findIndexForItem(string name)
{
    int ind = -1;
    for (int i = 0; i < listView1.Items.Count; i++)
    {
        if (listView1.Items[i].Text.Equals(name))
        {
            ind = i;
            break;
        }
    }
    return ind;
}

然后将其称为此

int ind = findIndexForItem("100109");
if (ind >= 0)
    listView1.Items.RemoveAt(ind);

答案 1 :(得分:1)

要使resolve起作用,您必须设置ListViewItem的名称。请参阅以下代码以了解所需的更改。

listView1.Items[id].Remove();

答案 2 :(得分:0)

您可以使用以下简单的方法将循环放在按钮事件中。

private void button1_Click(object sender, EventArgs e)
        {
            foreach (ListViewItem Item in listView1.SelectedItems)
            {
                listView1.Items.Remove(Item);
            }
        }