diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewCell.cs b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewCell.cs index cd57a0c1252..6740bed8c97 100644 --- a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewCell.cs +++ b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewCell.cs @@ -3671,7 +3671,9 @@ internal void PaintWork(Graphics graphics, cellStyle, advancedBorderStyle, paintParts); - dataGridView.OnCellPainting(dgvcpe); + + dataGridView?.OnCellPainting(dgvcpe); + if (dgvcpe.Handled) { return; diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewCheckBoxCell.cs b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewCheckBoxCell.cs index cee95b9b3d1..33b0299b22f 100644 --- a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewCheckBoxCell.cs +++ b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewCheckBoxCell.cs @@ -839,9 +839,9 @@ protected override void OnKeyUp(KeyEventArgs e, int rowIndex) e.Handled = true; } - NotifyMSAAClient(ColumnIndex, rowIndex); + NotifyMSAAClient(ColumnIndex, rowIndex); + } } - } protected override void OnLeave(int rowIndex, bool throughMouseClick) { @@ -967,9 +967,12 @@ private void NotifyUiaClient() private void NotifyMSAAClient(int columnIndex, int rowIndex) { - Debug.Assert(DataGridView is not null); - Debug.Assert((columnIndex >= 0) && (columnIndex < DataGridView.Columns.Count)); - Debug.Assert((rowIndex >= 0) && (rowIndex < DataGridView.Rows.Count)); + if (DataGridView is null || + columnIndex < 0 || columnIndex >= DataGridView.Columns.Count || + rowIndex < 0 || rowIndex >= DataGridView.Rows.Count) + { + return; + } int visibleRowIndex = DataGridView.Rows.GetRowCount(DataGridViewElementStates.Visible, 0, rowIndex); int visibleColumnIndex = DataGridView.Columns.ColumnIndexToActualDisplayIndex(columnIndex, DataGridViewElementStates.Visible); @@ -1043,7 +1046,11 @@ private Rectangle PaintPrivate( bool computeErrorIconBounds, bool paint) { + if(DataGridView is null) // Parameter checking. + { + return Rectangle.Empty; + } // One bit and one bit only should be turned on Debug.Assert(paint || computeContentBounds || computeErrorIconBounds); diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewRow.cs b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewRow.cs index 6927fe09346..e0ae66ee494 100644 --- a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewRow.cs +++ b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewRow.cs @@ -786,9 +786,13 @@ private void BuildInheritedRowHeaderCellStyle(DataGridViewCellStyle inheritedCel private void BuildInheritedRowStyle(int rowIndex, DataGridViewCellStyle inheritedRowStyle) { + if (DataGridView is null) + { + return; + } + Debug.Assert(inheritedRowStyle is not null); Debug.Assert(rowIndex >= 0); - Debug.Assert(DataGridView is not null); DataGridViewCellStyle? rowStyle = null; if (HasDefaultCellStyle) diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewRowHeaderCell.cs b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewRowHeaderCell.cs index 761e85955f8..8c35562b399 100644 --- a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewRowHeaderCell.cs +++ b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewRowHeaderCell.cs @@ -653,6 +653,12 @@ private Rectangle PaintPrivate( bool cellSelected = (dataGridViewElementState & DataGridViewElementStates.Selected) != 0; Debug.Assert(DataGridView is not null); + + if (DataGridView is null) + { + return Rectangle.Empty; + } + if (DataGridView.ApplyVisualStylesToHeaderCells) { if (cellStyle.Padding != Padding.Empty) diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewTextBoxCell.cs b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewTextBoxCell.cs index a26d3844f00..f89cc52511e 100644 --- a/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewTextBoxCell.cs +++ b/src/System.Windows.Forms/src/System/Windows/Forms/Controls/DataGridView/DataGridViewTextBoxCell.cs @@ -649,6 +649,11 @@ private Rectangle PaintPrivate( bool computeErrorIconBounds, bool paint) { + if (DataGridView is null) + { + return Rectangle.Empty; + } + // Parameter checking. One bit and one bit only should be turned on. Debug.Assert(paint || computeContentBounds || computeErrorIconBounds); Debug.Assert(!paint || !computeContentBounds || !computeErrorIconBounds);