Я пытаюсь сфокусировать ввод и запустить событие редактирования в каждой новой строке, которую я добавляю в DataGridView в моей форме.Выберите первую видимую ячейку новой строки в DataGridView
Это код, который я пытаюсь выполнить для пользователя.
Private Sub grd_GoldAdders_RowsAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowsAddedEventArgs) Handles grd_GoldAdders.RowsAdded
Dim grid As DataGridView = DirectCast(sender, DataGridView)
grid.ClearSelection()
If grid.Rows(e.RowIndex).Cells("grid_flag").FormattedValue = Constants.[New] Then
For Each cell As DataGridViewCell In grid.Rows(e.RowIndex).Cells
If Not cell.Visible Then Continue For
grid.CurrentCell = cell
grid.BeginEdit(False)
Exit For
Next
End If
End Sub
«grid_flag» - это скрытая ячейка, которая используется для хранения пользовательских состояний для строки.
До добавления строки, это то, что мы видим на форме:
Это то, что мы видим, когда мы на самом деле попробовать и добавить новую строку:
Обратите внимание, что оба столбец 0,0 и первый видимый столбец новой строки, но столбец 0,0 имеет фокус. Я не хочу, чтобы 0,0 либо выбирали, либо фокусировались. Я также вижу здесь, что индикатор строки указует на строке-тоже ...
Это, как я хотел бы видеть вещи после нажатия моей кнопки Добавить:
Кто-нибудь знает, где я неправильно с кодом? Я искал SO в течение большей части дня, пытаясь решить эту проблему.
Это не будет работать, если строки отсортированы, поскольку последняя строка (численно) в сетке не может быть последней (хронологически) добавленной строкой. – Mike 2010-11-30 19:17:45