Подтвердить что ты не робот

Выбор программ программно в DataGridView

Я хочу выбрать строку ранее выбранных строк после некоторого события, которое мой код выглядит следующим образом.

int currentRow = dgvIcbSubsInfo.CurrentCell.RowIndex;
//code to execute
dgvIcbSubsInfo.Rows[currentRow].Selected = true;

после выполнения кода предварительный просмотр будет таким, как показано ниже. но мне нужно получить символ > в id = 1272741 (синий выбор), а не в 1272737

enter image description here

4b9b3361

Ответ 1

Вероятно, вы могли бы взглянуть на свойство DataGridView.CurrentRow, которое является свойством только для чтения:

Возвращает строку, содержащую текущую ячейку.

Но в разделе замечаний записано:

Чтобы изменить текущую строку, вы должны установить свойство CurrentCellячейки в нужной строке.

Кроме того, из DataGridView.CurrentCell Property, мы узнаем, что:

При изменении значения этого свойства событие SelectionChanged происходит перед событием CurrentCellChanged. Любое событие SelectionChanged обработчик, получающий доступ к свойству CurrentCell в это время, получит его предыдущее значение.

Итак, нет необходимости в том, чтобы вы фактически выбрали currentRow becasue, который будет выбран, когда вы установите значение CurrentCell (если у вас не будет кода, который будет выполнен внутри текущей области действия между SelectionChanged и CurrentCellChanged события). Попробуйте следующее:

//dgvIcbSubsInfo.Rows[currentRow].Selected = true;
dgvIcbSubsInfo.CurrentCell = dgvIcbSubsInfo.Rows[currentRow].Cells[0];

Ответ 2

Я думаю, вы хотите выделить строку. Пожалуйста, попробуйте следующий код, я думаю, он может помочь:

Color color = dgv.Rows[prevRowIndex].DefaultCellStyle.SelectionBackColor;
dgv.Rows[curRowIndex].DefaultCellStyle.SelectionBackColor = color;