Как зафиксировать изменение значения ячейки в datagridview в vb

#vb.net

#vb.net

Вопрос:

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

 Private Sub DataGridView4_CellValuechanged(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView4.CellValueChanged

    Dim counter As Integer
    UName = Environment.UserName
    Dim now As DateTime

     If e.ColumnIndex > 0 Then
       For counter = 0 To (DataGridView4.Rows.Count - 1)
            DataGridView4.Item(e.ColumnIndex, counter).Value = DataGridView4.Item(e.ColumnIndex, e.RowIndex).Value
            DataGridView4.Item("Modifieddate", e.RowIndex).Value = Date.Now
            DataGridView4.Item("ModifierID", e.RowIndex).Value = UName.ToString.ToUpper

        Next
    End If

End Sub
  

Комментарии:

1. Подскажите, в чем ошибка?

2. Вы понимаете, что вы изменяете значение каждой строки для столбца, который был изменен. Это ваше намерение?

3. Последние 2 строки внутри цикла не принадлежат циклу. Вы просто сбрасываете одно и то же значение снова и снова.

4. Ошибка: Необработанное исключение типа ‘System. В системе произошло исключение StackOverflowException’. Windows. Forms.dll . Я стремлюсь к тому, чтобы при изменении какого-либо значения ячейки в строке были сохранены идентификатор пользователя и дата.

5. И какая строка вызывает исключение?

Ответ №1:

Я не уверен, о чем If e.ColumnIndex > 0 Then идет речь. Если это столбец, который вы не хотите, чтобы пользователь редактировал, то установите Column.ReadOnly = True и избавьтесь от оператора If.

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

  Private Sub DataGridView4_CellValuechanged(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView4.CellValueChanged
    If e.ColumnIndex > 0 Then
        DataGridView4.Item("Modifieddate", e.RowIndex).Value = Date.Now
        DataGridView4.Item("ModifierID", e.RowIndex).Value = Environment.UserName.ToUpper
    End If
End Sub