I recently had this problem at work, and lost a few hours trying to sort it out.
The problem scenario is that there is a listbox with a DataSource of type DataTable. When an item is selected from the listbox, its data is opened in a form to the right, allowing the user to edit or update the data using whatever controls we like. Functionality is provided by buttons: Save, Undo Changes, Delete.
The Delete button was a problem for me, because the RowState of the deleted row will not be set to Deleted until after the button's event exits. This seems to have something to do with the fact that the listbox is enumerating the underlying datasource, and hasn't had a chance to align itself properly. So calling Update right after the Delete doesn't help.