diff --git a/src/System.Windows.Forms/System/Windows/Forms/Controls/DataGridView/DataGridView.Methods.cs b/src/System.Windows.Forms/System/Windows/Forms/Controls/DataGridView/DataGridView.Methods.cs index 2c92bf0a787..d90e6915916 100644 --- a/src/System.Windows.Forms/System/Windows/Forms/Controls/DataGridView/DataGridView.Methods.cs +++ b/src/System.Windows.Forms/System/Windows/Forms/Controls/DataGridView/DataGridView.Methods.cs @@ -27017,7 +27017,8 @@ protected virtual bool SetCurrentCellAddressCore(int columnIndex, int oldCurrentCellY = _ptCurrentCell.Y; if (oldCurrentCellX >= 0 && !_dataGridViewState1[State1_TemporarilyResetCurrentCell] - && !_dataGridViewOper[OperationInDispose]) + && !_dataGridViewOper[OperationInDispose] + && !_dataGridViewOper[OperationInReleasingDataSource]) { DataGridViewCell currentCell = CurrentCellInternal; if (!EndEdit( diff --git a/src/System.Windows.Forms/System/Windows/Forms/Controls/DataGridView/DataGridView.cs b/src/System.Windows.Forms/System/Windows/Forms/Controls/DataGridView/DataGridView.cs index 488b74bab95..44d7978e5bd 100644 --- a/src/System.Windows.Forms/System/Windows/Forms/Controls/DataGridView/DataGridView.cs +++ b/src/System.Windows.Forms/System/Windows/Forms/Controls/DataGridView/DataGridView.cs @@ -222,6 +222,7 @@ public partial class DataGridView : Control, ISupportInitialize private const int OperationInEndEdit = 0x00400000; private const int OperationResizingOperationAboutToStart = 0x00800000; private const int OperationTrackKeyboardColResize = 0x01000000; + private const int OperationInReleasingDataSource = 0x02000000; private const int OperationMouseOperationMask = OperationTrackColResize | OperationTrackRowResize | OperationTrackColRelocation | OperationTrackColHeadersResize | OperationTrackRowHeadersResize; private const int OperationKeyboardOperationMask = OperationTrackKeyboardColResize; @@ -1921,7 +1922,17 @@ public object? DataSource newDataSource.Disposed += OnDataSourceDisposed; } - CurrentCell = null; + _dataGridViewOper[OperationInReleasingDataSource] = true; + + try + { + CurrentCell = null; + } + finally + { + _dataGridViewOper[OperationInReleasingDataSource] = false; + } + if (DataConnection is null) { DataConnection = new DataGridViewDataConnection(this);