Как переопределить поведение datagridview по умолчанию при удалении строки?
I'm writing a C# .NET Winforms app with a DataGridView that is loaded with data from a List<t>. When a row is deleted from the DataGridView, the default behavior is that the first row becomes the current row. I want to override that by making the row after the deleted row, if there is one, the new current row. Say I have a DataGridView with 5 rows and I want to delete Row #3. Row 4 then becomes the new Row #3, so I'd want the new Row #3 to become the current row. Or, if I delete Row #5, I want Row #4 to become the new current row. I'm using a global integer "currentindex" to set the current row. currentindex changes to the DataGridView's current row index when DataGridView_SelectionChanged event fires...
private void DataGridView_SelectionChanged(object sender, EventArgs e) { currentindex = DataGridView.CurrentRow.Index; }
Вот блок кода, который я написал, чтобы обновить currentindex, если он выпадает из диапазона после удаления строки...
if (currentindex >= DataGridView.RowCount) currentindex--;
Примечание: DataGridView не привязан к списку<t>. Я попробовал использовать BindingList<t>, но у меня будет только та же проблема.
Что я уже пробовал:
Я попытался поместить этот блок кода в DataGridView_RowsRemoved, DataGridView_UserDeletingRow и DataGridView_UserDeletedRow, но строка #1 все равно становится новой текущей строкой после удаления строки.
Karthik_Mahalingam
вы пробовали работать с datatable?