Я считаю, что наилучшей практикой должно быть пройти официальный Java JSON API , который все еще работает.
CurrentRow
- строка, содержащая текущую активную ячейку. Когда вы привязываете DataGridView к внешнему источнику данных, это свойство сбрасывается до значения по умолчанию, которое является первой ячейкой в первом столбце.
SelectedRow
- это строка, которая в настоящее время выбрана / выделена. Это может быть одна или несколько строк в зависимости от свойства MultiSelect
. Чтобы выбрать строку, вы должны установить для ее свойства Selected
значение true.
Установив строку как выбранную, вы просто удерживаете ее подсвеченной, не делая ее активной.
Чтобы сохранить текущий ячейке вам нужно сохранить индекс строки и столбца текущей ячейки. Чтобы заставить их использовать свойство CurrentCellAddress
. После обновления DataSource
установите свойство CurrentCell с помощью этих индексов.
dataGridView1.CurrentCell = dataGridView1.Rows(rowindex).Cells(columnindex);
Когда источник данных изменяется, DataGridView
создает новый CurrencyManager . Если этот CM содержит элементы, позиция по умолчанию - 0
, таким образом, нажав на DGV и выберем первую строку.
Чтобы исправить это, просто установите положение CM:
Me.dgvPreviouslyCut.DataSource = my_new_datasource
Dim cm As CurrencyManager = CType(Me.BindingContext(my_new_datasource), CurrencyManager)
If ((Me.CurrentSelectedRow > -1) AndAlso (Me.CurrentSelectedRow < cm.Count)) Then
cm.Position = Me.CurrentSelectedRow
End If