VB.NET
Private defaultCellStyle As DataGridViewCellStyle
Private groupCellStyle As DataGridViewCellStyle
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Me.defaultCellStyle = New DataGridViewCellStyle()
Me.groupCellStyle = New DataGridViewCellStyle()
Me.groupCellStyle.ForeColor = Color.White
Me.groupCellStyle.BackColor = Color.DarkGreen
Me.groupCellStyle.SelectionBackColor = Color.DarkBlue
End Sub
Private Sub dgv1_CellFormatting(ByVal sender As Object, _
ByVal e As DataGridViewCellFormattingEventArgs) _
Handles dgv1.CellFormatting
Dim dgv As DataGridView = CType(sender, DataGridView)
If e.ColumnIndex = 0 AndAlso e.RowIndex >= 0 AndAlso _
e.RowIndex <> dgv.NewRowIndex Then
If e.RowIndex = 0 OrElse _
Not dgv(e.ColumnIndex, e.RowIndex - 1).Value.Equals(e.Value) Then
dgv.Rows(e.RowIndex).DefaultCellStyle = Me.groupCellStyle
Else
dgv.Rows(e.RowIndex).DefaultCellStyle = Me.defaultCellStyle
e.Value = ""
e.FormattingApplied = True
End If
End If
End Sub
C#private DataGridViewCellStyle defaultCellStyle;
private DataGridViewCellStyle groupCellStyle;
private void Form1_Load(object sender, EventArgs e)
{
this.defaultCellStyle = new DataGridViewCellStyle();
this.groupCellStyle = new DataGridViewCellStyle();
this.groupCellStyle.ForeColor = Color.White;
this.groupCellStyle.BackColor = Color.DarkGreen;
this.groupCellStyle.SelectionBackColor = Color.DarkBlue;
}
private void dgv1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
if (e.ColumnIndex == 0 && e.RowIndex >= 0 &&
e.RowIndex != dgv.NewRowIndex)
{
if (e.RowIndex == 0 ||
!dgv[e.ColumnIndex, e.RowIndex - 1].Value.Equals(e.Value))
{
dgv.Rows[e.RowIndex].DefaultCellStyle = this.groupCellStyle;
}
else
{
dgv.Rows[e.RowIndex].DefaultCellStyle = this.defaultCellStyle;
e.Value = "";
e.FormattingApplied = true;
}
}
}