protected internal virtual void Paint(Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, int rowIndex, DataGridViewElementStates rowState, bool isFirstDisplayedRow, bool isLastVisibleRow) { DataGridViewCellStyle style; if (Index == -1) { style = DataGridView.RowsDefaultCellStyle; } else { style = InheritedStyle; } DataGridViewRowPrePaintEventArgs pre = new DataGridViewRowPrePaintEventArgs(DataGridView, graphics, clipBounds, rowBounds, rowIndex, rowState, string.Empty, style, isFirstDisplayedRow, isLastVisibleRow); pre.PaintParts = DataGridViewPaintParts.All; DataGridView.OnRowPrePaint(pre); // The user has elected for us to not do anything if (pre.Handled) { return; } if (DataGridView.RowHeadersVisible) { PaintHeader(graphics, pre.ClipBounds, rowBounds, rowIndex, rowState, isFirstDisplayedRow, isLastVisibleRow, pre.PaintParts); } PaintCells(graphics, pre.ClipBounds, rowBounds, rowIndex, rowState, isFirstDisplayedRow, isLastVisibleRow, pre.PaintParts); DataGridViewRowPostPaintEventArgs post = new DataGridViewRowPostPaintEventArgs(DataGridView, graphics, pre.ClipBounds, rowBounds, rowIndex, rowState, pre.ErrorText, style, isFirstDisplayedRow, isLastVisibleRow); DataGridView.OnRowPostPaint(post); }