2016-07-21 1 views
1

Я пытаюсь удалить текущую строку из datagridview, которая не связана с каким-либо источником данных, а свойство AllowUserToAddRows является False.Удалить текущую/последнюю строку из Datagridviewrows в vb.net

добавить строки в DataGridView, используя код

Purchases.Rows.Add(selectedrow.Cells(0).Value, selectedrow.Cells(1).Value, selectedrow.Cells(2).Value, selectedrow.Cells(6).Value, "", "", selectedrow.Cells(3).Value 

И я использую этот код, чтобы удалить текущую строку

Private Sub Purchases_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Purchases.CellEndEdit 
    Try 
     If CDbl(Purchases.CurrentRow.Cells("Column7").Value) - CDbl(Purchases.CurrentRow.Cells(4).Value) < 0 Then 
      MessageBox.Show("Quantity entered is more than total in Stock " & vbNewLine & vbNewLine & Purchases.CurrentRow.Cells(1).Value & " Has " & stock & " in Stock" & vbNewLine & vbNewLine & "Increase Stock Level or Reduce Quantity Entered or See System Administrator for Help", "Pharm App " & Today.Year & "", MessageBoxButtons.OK, MessageBoxIcon.Information) 
      Purchases.Rows.Remove(Purchases.CurrentRow) 
     End If 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
End Sub 

, но я получаю сообщение об ошибке говорящее

«Операция недопустима потому что это приводит к повторному вызову функции SetCurrentCellAddressCore «

Я попытался удалить последний ряд с

Purchases.Rows.RemoveAt(Purchases.RowCount - 1) 

и я получаю ту же ошибку.

Помогите, поскольку я новичок.

+0

Я не получаю эту ошибку, когда использую 'Purchases.Rows.Remove (Purchases.CurrentRow)'. Кажется, это работает для меня. Что такое 'selectedrow', перед тем как добавить строку? Я не понимаю вашу строку строк. – Sastreen

+0

Это сообщение об ошибке указывает, что код находится в обработчике событий, где его выполнение приведет к тому, что тот же обработчик событий будет продолжать повторяться снова и снова. Код в порядке, но ваше размещение неверно. Поскольку вы не сказали нам, где это или при каких обстоятельствах вы хотите удалить эту строку, мы больше не можем помочь. – jmcilhinney

+0

@jmcilhinney Я отредактировал код и добавил событие, и обстоятельства, которые я хочу удалить. –

ответ

0

Вы должны удалить строку после это событие CellEndEdit, поэтому замените эту строку:

Purchases.Rows.Remove(Purchases.CurrentRow) 

с этим:

Me.BeginInvoke(New Action(Sub() Purchases.Rows.Remove(Purchases.CurrentRow))) 
+0

Это сработало отлично. Большое спасибо. –

0

Попробуйте это, он работает со мной

DataGridView1.AllowUserToAddRows = False 
+0

Сообщение упомянуто, что у них уже есть это свойство. Ваш ответ ничего не решает. – LarsTech

Смежные вопросы