>

값이 (예를 들어 아래 그림과 같이) 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입니다.

  • 답변 # 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);
    
    

  • 답변 # 2

    listView1.Items[id].Remove(); 를 위해  작동하려면 ListViewItem의 이름을 설정해야합니다. 필요한 변경 사항은 아래 코드를 참조하십시오.

    private void listy()
    {
        ListViewItem lvi = new ListViewItem(dgvPOSproduct.CurrentRow.Cells[0].Value.ToString());
        lvi.Name = dgvPOSproduct.CurrentRow.Cells[0].Value.ToString(); // <---- add this line
        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);
    }
    
    

  • 답변 # 3

    버튼 이벤트 안에 루프를 넣은 다음과 같은 간단한 방법을 사용할 수 있습니다.

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

관련 자료

  • 이전 javascript - jQuery를 사용하여 중앙에서 이미지 표시 및 확대
  • 다음 c# - 채널의 IAudioClient를 가져 오려고하면 프로그램이 충돌 함