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 |