come immaginavo(dopo 2 giorni e una nottataccia) l'errore(lo spigo a modo mio un po' rozzo) sta nell'aggiornare la tabella dopo il .delete,
E' come se data la tabella
c1 c2 c3
d1 d2 d3

e gli si dice elimina la riga c1 c2 c3, vengano ad essere ancora mantenuti dei riferimenti vuoti alla riga c1, c2 ,c3 che pero' non viene visualizzata nel datagrd4 (vedi post sopra)
Per sisolvere cio basta aggiungere la riga tbl1.AcceptChanges() dopo il while del tabella.delete