我想删除listview中的值,其值为(例如下图)等于100109。
我的代码是:
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。
答案 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);
}
}