-
내가 쓰려고 만든 C# 윈폼 템플릿 (데이터그리드뷰 셀 병합)C# 2020. 9. 15. 14:01
1. C# 윈폼에는 셀병합 기능이 없다. 시각적으로 비슷한 효과를 내는 함수
bool IsTheSameCellValue(int column, int row) { DataGridViewCell cell1 = dataGridView1[column, row]; DataGridViewCell cell2 = dataGridView1[column, row - 1]; if (cell1.Value == null || cell2.Value == null) { return false; } return cell1.Value.ToString() == cell2.Value.ToString(); }
메서드 정의
다음 데이터 그리드 뷰의 CellFormatting 이벤트
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if (e.ColumnIndex < 4) <==조건문으로 열선택 { if (e.RowIndex == 0) return; if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) { e.Value = ""; e.FormattingApplied = true; } } }
데이터 그리드 뷰의 CellPainting 이벤트
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if(e.ColumnIndex<4) // <==조건문으로 열선택 { e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None; if (e.RowIndex < 1 || e.ColumnIndex < 0) return; if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) { e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None; } else { e.AdvancedBorderStyle.Top = dataGridView1.AdvancedCellBorderStyle.Top; } } }
데이터 그리드 뷰의 DataError이벤트
private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e) { }
위 네가지로 셀 병합이 된다.
'C#' 카테고리의 다른 글
내가 쓰려고 만든 C# 윈폼 템플릿(Check박스를 이용한 Delete) (0) 2020.09.15 내가 쓰려고 만든 C# 윈폼 템플릿 (저장 (Insert, Update) ) (0) 2020.09.15 내가 쓰려고 만든 C# 윈폼 템플릿(기본키 확인 메서드) (0) 2020.09.15 내가 쓰려고 만든 C# 윈폼 템플릿(데이터 그리드뷰 셀 클릭,데이터 그리드 뷰 내부의 삭제 체크박스) (0) 2020.09.15 내가 쓰려고 만든 C# 윈폼 템플릿(콤보박스 데이터 바인딩) (0) 2020.09.15