У меня есть DataGridView, привязанный к таблице БД. DataGridView не редактируется, есть некоторые текстовые поля, в которых данные можно редактировать, что управляется кнопками. У меня есть кнопка NewRow со следующим кодом:

        dataGridView1.AllowUserToAddRows = true;
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (row.Selected)
            { row.Selected = false; }
        } 
        dataGridView1.Rows[dataGridView1.NewRowIndex].Selected = true;

Что мне нужно:

  • datagridview должен прокручиваться вниз (где находится newRow)
  • новая строка должна быть сфокусирована, чтобы текстовые поля отображали новую (пустую) строку (содержимое)

Я пытался:

        bindSourceGS.Position = dataGridView1.NewRowIndex;

Но это не выбирает newRow datagridview. Я хочу использовать newRow datagridview, потому что, когда пользователь нажимает кнопку отмены, мне не нужно удалять строку в Dataset и datagridview.Rows [i] имеет свойство IsNewRow.

14
RainerM 5 Май 2011 в 16:48
Не смешивайте DataGrid и DataGridView, это разные элементы управления. Я отредактировал ваш вопрос, чтобы было ясно, что вы используете DataGridView.
 – 
Thomas Levesque
5 Май 2011 в 17:35

3 ответа

Лучший ответ

Если это Winform , вы можете использовать это

dataGridView1.FirstDisplayedScrollingRowIndex

И установите datagridview.CurrentCell на адрес новой ячейки строки.

Надеюсь это поможет

13
V4Vendetta 5 Май 2011 в 17:42
Да, это Winform, оба ваших предложения работают отлично. Спасибо!
 – 
RainerM
5 Май 2011 в 18:13

Примечание. Для успешного выполнения FirstDisplayedScrollingRowIndex, если у вас есть строки со смешанной высотой, необходимо убедиться, что высота шаблона строк не меньше, чем высота последней строки. Это скорее проблема, поскольку я считаю, что нельзя установить высоту строки больше, чем высота шаблона строки.

0
ChrisJJ 9 Ноя 2011 в 07:28

Я исследовал эту проблему и обнаружил, что параметр dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.Rows.count-1 работает хорошо, пока для свойства AutoSizeRowsMode НЕ установлено значение DisplayedCells.

Если у вас возникли проблемы с настройкой dataGridView1.FirstDisplayedScrollingRowIndex=dataGridView1.Rows.Count -1 и сетка не прокручивается вниз, попробуйте установить для свойства AutosizeRowsMode значение AllCells.

0
madlymad 16 Мар 2013 в 21:08