listView 에서 행을 병합할 때 사용하는 코드입니다. 이 코드는 특정한 셀기준으로 병합처리를 했다. 여러행을 같이 처리하라면 더 추가해야 한다. 개념적인 것만 알아두면 응용은 할 수 있다.
private void LineMerge(ListView LV)
{
// 첫번째 row 에 데이터 같이 저장, 두번째이후 row 삭제처리
if (LV.SelectedIndices.Count >= 2)
{
for (int i = 0; i < LV.SelectedIndices.Count; i++)
{
string str = LV.SelectedItems[i].SubItems[2].Text;
merge_str += str + System.Environment.NewLine; // 줄바꿈문자
}
LV.SelectedItems[0].SubItems[2].Text = merge_str.Trim();
// MessageBox.Show(merge_str); // 병합된 문자열 출력해 보기 위해
merge_str = string.Empty;
for (int i = LV.SelectedIndices.Count - 1; i > 0; i--)
{
LV.Items.Remove(LV.SelectedItems[i]); // 삭제는 index 번호가 큰번호에서 작은번호 순으로
}
listView_No(LV); // 번호를 renumbering 처리
}
else
{
MessageBox.Show("최소 2개의 행을 선택해야 합니다");
return;
}
}
2. 선택된 Line 의 바로 이전행과 병합할 때
키포인트는 선택된 행의 index 를 구한 다음에 이전 행의 index 를 구해서
LV.Items[i].SubItems[3].Text // i = selectedindex
즉 LV.SelectedItems[0].SubItems[3].Text 가 아니라는 점이다.
private void LineMergeWithLineBefore(ListView LV)
{
string delimiter = System.Environment.NewLine;
if (LV.SelectedIndices.Count > 0)
{
int selectedindex = LV.SelectedItems[0].Index;
int previousindex = selectedindex - 1;
merge_str = LV.Items[previousindex].SubItems[3].Text + delimiter + LV.Items[selectedindex].SubItems[3].Text;
LV.Items[previousindex].SubItems[3].Text = merge_str.Trim();
LV.Items.Remove(LV.Items[selectedindex]);
listView_No(LV);
}
}
3. 선택된 Line 의 바로 다음행과 병합할 때
private void LineMergeWithLineAfter(ListView LV)
{
string delimiter = System.Environment.NewLine;
if (LV.SelectedIndices.Count > 0)
{
int selectedindex = LV.SelectedItems[0].Index;
int nextindex = selectedindex + 1;
merge_str = LV.Items[selectedindex].SubItems[3].Text + delimiter + LV.Items[nextindex].SubItems[3].Text;
LV.Items[selectedindex].SubItems[3].Text = merge_str.Trim();
LV.Items.Remove(LV.Items[nextindex]);
listView_No(LV);
}
}
'C# > listView' 카테고리의 다른 글
C# listView 기능 분석 (행삭제, Drag&Drop 파일 읽어오기, 칼럼안보이게처리) (0) | 2015.10.15 |
---|---|
C# listView Checkbox 추가하는 방법 (2) | 2015.10.04 |
C# listView 텍스트파일로 저장 (0) | 2015.09.29 |
C# listView 행높이 지정 방법 (0) | 2015.09.27 |
C# listView ContextMenu 에서 행 삭제 (0) | 2015.09.26 |