Index: Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControlCellFormatExtensions.cs
===================================================================
diff -u -r6cdb90fc3f89fe0c44b62d3be7266a0090a6b891 -rbcaba4c27e18f3551487c131816fb5c01eff0f32
--- Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControlCellFormatExtensions.cs (.../DataGridViewControlCellFormatExtensions.cs) (revision 6cdb90fc3f89fe0c44b62d3be7266a0090a6b891)
+++ Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControlCellFormatExtensions.cs (.../DataGridViewControlCellFormatExtensions.cs) (revision bcaba4c27e18f3551487c131816fb5c01eff0f32)
@@ -39,14 +39,20 @@
/// is null.
/// Thrown when the
/// or the does not exist.
+ /// When the of the corresponding row is not of
+ /// the type , no formatting is applied.
public static void FormatCellWithColumnStateDefinition(this DataGridViewControl dataGridViewControl, int rowIndex, int columnIndex)
{
if (dataGridViewControl == null)
{
throw new ArgumentNullException(nameof(dataGridViewControl));
}
- var row = (IHasColumnStateDefinitions) dataGridViewControl.GetRowFromIndex(rowIndex).DataBoundItem;
+ if (!(dataGridViewControl.GetRowFromIndex(rowIndex).DataBoundItem is IHasColumnStateDefinitions row))
+ {
+ return;
+ }
+
if (row.ColumnStateDefinitions.ContainsKey(columnIndex))
{
DataGridViewColumnStateDefinition columnStateDefinition = row.ColumnStateDefinitions[columnIndex];
Index: Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewControlCellFormatExtensionsTest.cs
===================================================================
diff -u -r51b64230b9b947ba32821ed104809429d469959b -rbcaba4c27e18f3551487c131816fb5c01eff0f32
--- Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewControlCellFormatExtensionsTest.cs (.../DataGridViewControlCellFormatExtensionsTest.cs) (revision 51b64230b9b947ba32821ed104809429d469959b)
+++ Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewControlCellFormatExtensionsTest.cs (.../DataGridViewControlCellFormatExtensionsTest.cs) (revision bcaba4c27e18f3551487c131816fb5c01eff0f32)
@@ -44,14 +44,38 @@
public void FormatCellWithColumnStateDefinition_DataGridViewControlNull_ThrowsArgumentNullException()
{
// Call
- TestDelegate call = () => ((DataGridViewControl) null).FormatCellWithColumnStateDefinition(0, 0);
+ void Call() => ((DataGridViewControl) null).FormatCellWithColumnStateDefinition(0, 0);
// Assert
- var exception = Assert.Throws(call);
+ var exception = Assert.Throws(Call);
Assert.AreEqual("dataGridViewControl", exception.ParamName);
}
[Test]
+ public void FormatCellWithColumnStateDefinition_RowWithoutColumnStateDefinitions_DoesNotThrow()
+ {
+ // Setup
+ using (var form = new Form())
+ using (var dataGridViewControl = new DataGridViewControl())
+ {
+ form.Controls.Add(dataGridViewControl);
+ form.Show();
+
+ dataGridViewControl.AddTextBoxColumn(null, "Test");
+ dataGridViewControl.SetDataSource(new[]
+ {
+ new object()
+ });
+
+ // Call
+ void Call() => dataGridViewControl.FormatCellWithColumnStateDefinition(0, 0);
+
+ // Assert
+ Assert.DoesNotThrow(Call);
+ }
+ }
+
+ [Test]
[TestCaseSource(nameof(CellFormattingStates))]
public void FormatCellWithColumnStateDefinition_WithArguments_FormatsCell(
bool isReadOnly, string errorText, CellStyle cellStyle)
@@ -95,6 +119,8 @@
Assert.AreEqual(errorText, cell.ErrorText);
Assert.AreEqual(cellStyle.BackgroundColor, cell.Style.BackColor);
Assert.AreEqual(cellStyle.TextColor, cell.Style.ForeColor);
+
+ mocks.VerifyAll();
}
}
}