выяснить rowindex для строки, которую я только что вставил? - PullRequest
2 голосов
/ 02 сентября 2011

У меня есть проект vb, который я обновляю, и у него есть сетка данных, панель и кнопки внизу. Кнопки управляют операциями CRUD. На панели отображаются числовые взлеты и падения и текстовые поля для представления выбранной строки.

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

После хорошей вставки я хотел бы установить фокус на только что вставленную строку. Но я не знаю, как определить значение rowindex для этой недавно вставленной строки. Моя таблица данных, которую использует datagridview, отсортирована по двум столбцам идентификаторов, поэтому новая запись не будет просто прыгать вниз.

Есть идеи, как мне это реализовать?

Ответы [ 3 ]

3 голосов
/ 02 сентября 2011

Если вы не хотите иметь дело с событием RowAdded, как предлагал Джей Риггс, если вы добавляете его, используя объект строки, а не просто Rows.Add, вы должны иметь возможность извлечь это из объекта строки послеэто вставлено.

Dim dgr As New DataGridViewRow()

DataGridView1.Rows.Add(dgr)
Me.DataGridView1.Rows.IndexOf(dgr)

Это также должно работать и для вставки.

2 голосов
/ 02 сентября 2011

Проверьте событие DataGridView RowAdded; его параметр DataGridViewRowsAddedEventArgs включает свойство RowIndex, которое дает вам то, что вам нужно.

Событие срабатывает при каждом добавлении строки, поэтому вам придется либо подключить событие, когда вы хотите проверить добавленные строки, либо игнорировать событие, если вам все равно, когда добавляется строка (например, когда ваша сетка заполняется данными).

0 голосов
/ 02 сентября 2011

Если вы вручную добавляете строки в DataGridView, то вы можете просто использовать возвращаемое значение из метода Add. Примеры:

Dim newRowIndex As Integer = myDataGridView.Rows.Add()
myDataGridView.Rows(newRowIndex).Selected = True

Нет необходимости вызывать IndexOf. Если DataGridView привязан к источнику данных, то решение Jay Riggs об использовании события RowsAdded - это путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...