Usando un controllo di tipo
BindingNavigator, con i pulsanti predefiniti, può succedere che si
verifichino degli errori se, oltre all’evento naturalmente sollevato
dalla funzione ‘BindingNavigatorDeleteItem’ compresa di default, si
inserisca del code behind (per esempio per gestire dei messagebox o per
aggiornare dei controlli a latere).
L’errore che compare è
‘L’oggetto corrente non può essere rimosso dalla lista perché non c’è alcun oggetto corrente’
Nella fattispecie, l’errore generato nasce per esempio nel caso in cui ci si trovi in un datagrid ove è presente l’ultima riga di dati e dalla pressione del pulsante di eliminazione venga gestito un evento tipo
Private Sub BtnDelete_Click(sender As System.Object, e As System.EventArgs) Handles BtnDelete.Click
Try
If (Me.Validate() And Not (Tab_MapsBindingSource Is Nothing)) Then
Tab_BindingSource.RemoveCurrent()
Me.Tab_BindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.DataSet)
Tab_BindingSource.CurrencyManager.Refresh()
Tab_DataGridView.Refresh()
End If
Catch ex As Exception
End Try
End Sub
Alla
fine della sub, viene lanciato l’evento di default del BindingNavigator
che, non trovando alcuna riga disponibile, scatena l’errore.
Per ovviare a tale problema, è sufficiente impostare la proprietà
DeleteItem del Binding Navigator a ‘nessuno’, come da immagine sotto
riportata