728x90

listView1 에서 마우스 우클릭하여 행을 추가, 삭제하고 싶다면 어떻게 해야 할까?

선택한 행만 삭제하도록 구현할 경우와 다중 삭제를 할 수 있도록 구현하는 방법이 각각 다르다.



ContextMenu 에 listView1 서 ContextMenuStrip 다.




이제 ContextMenu 항목을 추가한 다음에

private void lineDeleteToolStripMenuItem_Click(object sender, EventArgs e)
{
    // 선택한 Line 다중 삭제
    foreach (ListViewItem item in listView1.SelectedItems)
    {
        listView1.Items.Remove(item);
    }
    listView1.Update();
}

private void lineDeleteToolStripMenuItem_Click(object sender, EventArgs e)
{
     if (listView1.SelectedItems.Count > 0)   // 선택한 Line 만 삭제됨
     {
         listView1.SelectedItems[0].Remove();
         listView1.Update();
     }
}


이걸 ListView1 에서만 사용하는 것이 아니라 listView2 에서도 같이 사용하고자 하면 함수로 만드는게 좋다.

여러 행을 지울 때 지우고 난 이후 첫번째 행으로 선택되게 하려면 첫번째 선택한 행의 index 값을 구하면 된다.

선택한 행의 index 값을 알아보려면 아래와 같이 하면 된다.

for (int i = 0; i < LV.SelectedItems.Count; i++)
{
    MessageBox.Show(LV.SelectedIndices[i].ToString());
}

// ----- Line Delete Func ------ //

private void lineDeleteToolStripMenuItem_Click(object sender, EventArgs e)
{
    Delete_listView(listView1);
}

private void Delete_listView(ListView LV)
{

    if (LV.SelectedItems.Count <= 0)

    {

          MessageBox.Show("선택된 행이 없습니다");

          return;

    }

    int index = LV.SelectedIndices[0]; // 첫번째 선택 index   
    foreach (ListViewItem item in LV.SelectedItems)
    {
        LV.Items.Remove(item); 
// 선택한 행 삭제   

    }
    listView_No(LV);  // 번호 다시 매기기
    if (index > LV.Items.Count -1) // index 가 마지막 행보다 크면
    {
        index = LV.Items.Count -1;
    }
    LV.Items[index].Selected = true;
    LV.Items[index].EnsureVisible();
}

private void listView_No(ListView LV)
{
    // 번호 매기기
    for (int i = 0; i < LV.Items.Count; i++)
    {
        LV.Items[i].Text = (i + 1).ToString();
    }
}

'C# > listView' 카테고리의 다른 글

C# listView Checkbox 추가하는 방법  (2) 2015.10.04
C# listView Line Merge(행 병합)  (0) 2015.10.03
C# listView 텍스트파일로 저장  (0) 2015.09.29
C# listView 행높이 지정 방법  (0) 2015.09.27
C# ListView 기능 분석  (0) 2015.09.14
블로그 이미지

Link2Me

,