System.invalidoperationexception: "операция недопустима, поскольку она приводит к повторному вызову функции setcurrentcelladdresscore".
datagride с 3 колонками колонки 0 и 2 можно редактировать ....когда пользователь вводит значение в столбец 0 и нажимает enter, оно переходит в столбец 2, и этот столбец находится в режиме редактирования ...
генерация ошибок
"System.InvalidOperationException: 'Operation is not valid because it results in a reentrant call to the SetCurrentCellAddressCore function.
Что я уже пробовал:
Private Sub DgvData_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DgvData.CellEndEdi Dim iColumn = DgvData.CurrentCell.ColumnIndex Dim iRow = DgvData.CurrentCell.RowIndex If DgvData.Columns.Count = 3 Then If iColumn = DgvData.ColumnCount - 1 Then If iRow < DgvData.RowCount - 1 Then DgvData.CurrentCell = DgvData(0, iRow + 1) DgvData.BeginEdit(True) End If Else If iRow < DgvData.RowCount - 1 Then SendKeys.Send("{Up}") End If If DgvData.Rows(iRow).Cells(0).Value.ToString = "" And DgvData.RowCount - 1 = 0 Then DgvData.CurrentCell = DgvData(0, 0) DgvData.BeginEdit(True) Else DgvData.CurrentCell = DgvData(iColumn + 2, iRow) DgvData.BeginEdit(True) End if End if End if
Richard MacCutchan
Вы пытаетесь отредактировать данные внутри своего обработчика редактирования. Вы не можете этого сделать, так как это приведет к повторному вызову обработчика изнутри обработчика, что приведет к вызову обработчика ...
KM999
можете ли вы предоставить код обработчика EndEdit
Richard MacCutchan
Нет, вам нужно перепроектировать свой обработчик так, чтобы он не пытался запустить процесс редактирования.