Hello World

C#(WINFORM, WINCE, WINDOWS MOBILE) 실전 활용 예제소스 및 프로그램 개발

[C#]Datagridview Cell Merge 예제

댓글 0

C#

2021. 4. 21.

bool IsSameCellValueCheck(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();
}

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
        e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None;

        if (e.RowIndex < 1 || e.ColumnIndex < 0)
        {
            e.AdvancedBorderStyle.Top = dataGridView1.AdvancedCellBorderStyle.Top;

            return;
        }

        if (e.ColumnIndex == 1)
        {
            if (IsSameCellValueCheck(e.ColumnIndex, e.RowIndex))
            {
                e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
            }
            else
            {
                e.AdvancedBorderStyle.Top = dataGridView1.AdvancedCellBorderStyle.Top;
            }
        }
        else
            e.AdvancedBorderStyle.Top = dataGridView1.AdvancedCellBorderStyle.Top;
}

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
        if (e.RowIndex < 1)
            return;

        if (e.ColumnIndex == 1)
        {
            if (IsSameCellValueCheck(e.ColumnIndex, e.RowIndex))
            {
                e.Value = "";

                e.FormattingApplied = true;
            }
        }
}

Datagridview Cell Merge 예제이며, 위의 코드 행의 1번 컬럼의 값이 같으면 Merge하는 예제 코드입니다.

상용그리드에서는 셀병합 가능하지만 datagridview에서는 별도 작업을 해줘야 가능한 기능입니다.